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

来源:互联网 发布:淘宝v2会员在哪儿看 编辑:程序博客网 时间:2024/05/02 01:34
应用生命周期

当我们在工程模板中选择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
这个方法是当程序终止时被调用,但是发生内存警告,并进行内存清除时不会被调用。这时候可以释放资源,保存用户数据。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 刚收的京东快递质量有问题怎么办 拼多多买家接受信息没有声音怎么办 苹果6s外放声音有杂音怎么办 华为手机不小心把视频删了怎么办 电脑做完系统不显示声卡了怎么办 苹果手机自带浏览器看视频卡怎么办 pr剪辑的时候视频太卡怎么办 小米手机忘记登录账号密码了怎么办 石膏线条软模硅胶模具气泡多怎么办 京东白条开通失败怎么办金牌用户 买家说我运费险没赔要投诉我怎么办 包邮有运费险的东西想退货怎么办 高锰酸钾沾到龟头上形成黑点怎么办 淘宝发货包邮买家退款运费怎么办 京东实名认证的手机号不用了怎么办 淘宝退货在自提柜 卖家不取怎么办 如果买家退货那卖家送的东西怎么办 陆金所注册手机号被占用要怎么办 重新登录而忘记密码和验证码怎么办 手机清理垃圾清掉的照片怎么办 收件人名字写错了拿不到快递怎么办 档案回原籍收件人写错了怎么办 寄申通快递收件人电话写错了怎么办 第三方支付倒闭了用户的钱怎么办啊 京东配送日期内货没送到家怎么办 拼多多拼单不成功优惠券退吗怎么办 退货退错了不发回来怎么办 商家总是不发退货地址过来怎么办 美团外卖下单后电话没改怎么办 从日本邮寄东西到中国被扣怎么办 淘宝拒收卖家收到货不退款怎么办 拒收的快递丢了卖家拒绝退款怎么办 京东买了东西超过七天想退货怎么办 微信买东西支付宝付款被骗怎么办 京东购物己付款卖家没发货怎么办 天猫先行退款卖家拒收怎么办 京东金条提前还款借不了怎么办 网银密码输入六次错误怎么办 迷失在时间和空间的交界处该怎么办 用卫生巾过后瘙痒起疹子了怎么办 装修公司倒闭了装修保修卡怎么办