爱程序网

读书笔记-基础

来源: 阅读:

1、iOS的系统架构分为4层——Cocoa Touch层、Media层、Core Services层和Core OS层。

2、自动布局(Auto Layout)最先应用于Mac 0S X 10.7的开发,它为视图布局定义一套约束,而约束定义了两个界面中视图之间的关系。

3、AppDelegate是应用程序委托对象,继承了UIResponder类,并实现了UIApplicationDelegate委托协议。前者使子类AppDelegate具有处理相应时间的能力,而后者委托协议使其能够成为应用程序委托对象,这种对象能够响应应用程序的生命周期。相应的,AppDelegate的子类也能够实现这两个功能。

4、ViewController类继承自UIViewController类,它是视图控制器类,在工程中扮演着根视图和用户事件控制类的角色。 

5、nib等同于xib。一般而言,一个工程中可以有多个xib文件,一个xib文件对应着一个视图控制器和多个视图,而使用故事版时,一个工程只需要一个故事板文件就可以了。故事板还可以描述界面之间的导航关系。 事实上,故事板是多个xib文件集合的描述文件,也采用xml格式。

6、应用的生命周期:作为应用程序的委托对象,AppDelegate类在应用生命周期的不同阶段会回调不同的方法。

下面简要介绍下iOS应用的的5种状态。

Not Running(非运行状态)。应用没有运行或被系统终止。

Inactive(前台非活动状态)。应用正在进入前台状态,但是还不能接受事件处理。

Active(前台活动状态)。应用进入前台状态,能接受事件处理。

Background(后台状态)。应用进入后台后,依然能够执行代码。如果有可执行的代码就会执行代码,如果没有可执行的代码或者将可执行的代码执行完毕,应用会马上进入挂起状态。

Suspended(挂起状态)。处于挂起的应用进入一种“冷冻“状态,不能执行代码。如果系统内存不够,应用会被终止。

在应用状态跃迁的过程中,iOS系统会回调AppDelegate中的一些方法,并且发送一些相应的通知:

application:didFinishLaunchingWithOptions:应用启动并进行初始化时会调用该方法并发出通知,这个阶段会实例化根视图控制器。

applicationDidBecomeActive:应用进入前台并处于活动状态时调用该方法并发出通知。这个阶段可以恢复UI的状态。

applicationWillResignActive:应用从活动状态进入到非活动状态时调用该方法并发出通知。这个阶段可以保存UI的状态。

applicationDidEnterBackground:应用进入后台时调用该方法并发出通知。这个阶段可以保存用户数据,释放一些资源(例如数据库资源等)

applicationWillEnterForeground:应用进入到前台,但是还没有处于活动状态时调用该方法并发出通知。这个阶段可以恢复用户数据。

applicationWillTerminate:应用被终止时调用该方法并发出通知,但内存清除时除外。这个阶段释放一些资源,也可以保存用户数据。

下面我们以几个应用场景为切入(具体分析就不写了,相信大家肯定也都能理解):

应用启动场景:Not running→Inactive→Active 

应用退出场景:该场景的状态跃迁过程可以分为两种情况,可以在后台运行或挂起和不可以。根据产品属性文件中的相关属性Application does not run in background可以控制这两种这两种状态。

(1)应用可以在后台运行或挂起:Active → Inactive → Background→Suspended 

(2)应用不可以在后台运行或挂起:Active → Inactive → Background→Suspended→Not running

挂起重新运行场景:Suspended → Background → Inactive → Active

内存清除-应用终止场景: Background→Suspended→Not running

7、视图生命周期

在视图不同的生命周期中,视图控制器会回调不同的方法。

在视图控制器已被实例化,视图被加载到内存中时调用viewDidLoad方法,这个时候视图并未出现。在该方法中,通常进行的是对所控制的视图进行初始化处理。

视图可见前后会调用viewWillAppear:方法和viewDidAppear:方法。视图不可见前后会调用viewWiiDisappear:和viewDidDisappear:方法。4个方法调用父类相应的方法以实现其功能,编码时该方法的位置可根据情况做以调整,如下:

1 -(void)viewWillAppear:(BOOL)animated 2 { 3 [super viewWillAppear:YES];

关于爱程序网 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助