iOS梦工厂

iCocos——不战胜自己,何以改变未来!

iOS生命周期

| Comments

控制器(View)生命周期

当一个视图控制器被创建,并在屏幕上显示的时候。 代码的执行顺序

1、 alloc                                   创建对象,分配空间
2、init (initWithNibName) 初始化对象,初始化数据
3、loadView                          从nib载入视图 ,通常这一步不需要去干涉。除非你没有使用xib文件创建视图
4、viewDidLoad                   载入完成,可以进行自定义数据以及动态创建其他控件
5、viewWillAppear              视图将出现在屏幕之前,马上这个视图就会被展现在屏幕上了
6、viewDidAppear               视图已在屏幕上渲染完成

当一个视图被移除屏幕并且销毁的时候的执行顺序,这个顺序差不多和上面的相反

1、viewWillDisappear            视图将被从屏幕上移除之前执行
2、viewDidDisappear             视图已经被从屏幕上移除,用户看不到这个视图了
3、dealloc                                 视图被销毁,此处需要对你在init和viewDidLoad中创建的对象进行释放

再来看张网上找到的图,结合上面的总结那么久很清晰了!

-------------------------------

app的启动过程

1.先执行main函数,main内部会调用UIApplicationMain函数

2.UIApplicationMain函数里面做了什么事情:

    1> 创建UIApplication对象
    2> 创建UIApplication的delegate对象—–PYAppDelegate
    3> 开启一个消息循环

每监听到对应的系统事件时,就会通知MJAppDelegate

根据plist文件判断是否需要加载storyBoard

如果有storyBoard

加载Info.plist文件,读取最主要storyboard文件的名称

加载最主要的storyboard文件,创建白色箭头所指的控制器对象

并且设置创建的控制器为UIWindow的rootViewController属性(根控制器)

初始化对应的子控件

如果没有storyBoard

在代理的difinishLuaunchWithOPtions中为应用程序创建一个UIWindow对象(继承自UIView),设置为PYAppDelegate的window属性

并且设置创建的控制器为UIWindow的rootViewController属性(根控制器)

初始化对应的子控件

-------------------------------

App的生命周期

这里只是简单的总结,关于有些方法我们并没有解除过,所以就略过了。

 1、application didFinishLaunchingWithOptions:当应用程序启动时执行,应用程序启动入口,只在应用程序启动时执行一次。若用户直接启动,lauchOptions内无数据,若通过其他方式启动应用,lauchOptions包含对应方式的内容。
 2、applicationWillResignActive:在应用程序将要由活动状态切换到非活动状态时候,要执行的委托调用,如 按下 home 按钮,返回主屏幕,或全屏之间切换应用程序等。

 3、applicationDidEnterBackground:在应用程序已进入后台程序时,要执行的委托调用。

 4、applicationWillEnterForeground:在应用程序将要进入前台时(被激活),要执行的委托调用,刚好与applicationWillResignActive 方法相对应。

 5、applicationDidBecomeActive:在应用程序已被激活后,要执行的委托调用,刚好与applicationDidEnterBackground 方法相对应。

 6、applicationWillTerminate:在应用程序要完全推出的时候,要执行的委托调用,这个需要要设置UIApplicationExitsOnSuspend的键值。


微信号:

clpaial10201119(Q Q:2211523682)

微博WB:

http://weibo.com/u/3288975567?is_hot=1

gitHub:

https://github.com/al1020119

博客

http://al1020119.github.io/


Comments