ios学习(一):应用生命周期

应用生命周期

当我们在工程模板中选择Single View Application模板的之后,就创建了一个拥有Appdelegate委托对象、viewController主视图控制器的项目工程,当然还有一些其他的文件,我们的项目都是从这两个类开始的,还有一个我们不需要去修改的main文件,是我们程序的主入口,所以还是有必要去了解一下。

在main.m代码块中,由main()主函数去实例话一个Appdelegate,并且让程序进入一个RunLoop当中去。下面是main函数块:

int main( int argc, char *argv[ ] )
{
	@autoreleasepool
	{
              return UIApplicationMain ( argc , argv, nil, NSStringFromClass( [ AppDelegate class ] ) );
        }
}


前两个参数是main函数传递进来的两个参数。第三个参数UIApplication类名称或者其子类的类名称,由于我们一般都使用委托对象AppDelegate,所以参数为nil。第四个参数就是我们的委托对象的类名称。

当main函数进行AppDelegate实例化后,程序进入RunLoop。由于这个委托对象实现了UIApplicationDelegate协议,所以这个类实现了一系列的方法,让程序在应用生命周期的不同阶段去调用这些方法。

在列出这些方法之前有必要说明一下IOS应用的5种状态:

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

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

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

Background(后台状态)。进入后台后,可以执行代码,如果有执行,没有,程序会马上进入挂起状态。

Suspended(挂起状态)。进入挂起状态,不能执行代码。如果内存警告,则程序会被终止,占用内存会被回收。

上面所说的委托对象不同阶段实现的方法如下:

1、  - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

这个方法被调用一般出现在你的window视图出现或者其他使程序进入活动状态或者后台状态的方法调用之前调用。

在这个函数中你可以初始化window视图和跟视图控制器.

2、  - (void)applicationWillResignActive:(UIApplication*)application
这个方法会在你的程序将要进入非活动状态时调用,比如按下home键或者其他程序导致程序中断。这个阶段可以保存UI状态。

3、  - ( void)applicationDidEnterBackground:( UIApplication*)application

这个方法是当程序已经进入后台状态是调用,这时候可以保存用户数据,因为程序马上会进入挂起状态,当内存警告时,会终止程序,如果不保存用户数据,则会丢失数据。

4、  - (void)applicationWillEnterForeground:(UIApplication*)application
这个方法是当程序进入前台但是还没有进入活动状态时调用,这时候可以恢复用户数据。

5、  - (void)applicationDidBecomeActive:(UIApplication*)application
这个方法是当程序已经进入活动状态时调用。这时候可以恢复UI状态,可以接着执行代码。

6、  - (void)applicationWillTerminate:(UIApplication*)application
这个方法是当程序终止时被调用,但是发生内存警告,并进行内存清除时不会被调用。这时候可以释放资源,保存用户数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值