iOS 基础学习iOS Developer

iOS-关于应用/视图的生命周期及程序启动原理小结

2016-08-11  本文已影响48人  麦穗0615

前言:

所有的移动操作系统都有个致命的缺点:app很容易受到打扰。比如一个来电或者锁屏会导致app进入后台甚至被终止

还有很多其它类似的情况会导致app受到干扰,在app受到干扰时,会产生一些系统事件,这时UIApplication会通知它的delegate对象,让delegate代理来处理这些系统事件

delegate可处理的事件包括:

应用的生命周期--->启动过程:
应用启动过程
这些UIApplicationDelegate,监听应用程序的生命周期,监听内存警告,系统事件
     NSLog(@"%s",__func__);
     return YES;
  }
      NSLog(@"%s",__func__);
  }
      NSLog(@"%s",__func__);
  }
      NSLog(@"%s",__func__);
  }
    }
  {
      NSLog(@"%s",__func__);
  }

应用程序一般有五个状态:官方文档app.states

程序启动生命周期:--> (启动过程)

~~A篇:启动原理 ~~
① 执行main 函数,调用 main 函数里的 UIApplicationMain 函数。

*intUIApplicationMain(int argc, char argv[], NSString principalClassName, NSString delegateClassName);

② UIApplicationMain函数会根据principalClassName创建UIApplication对象,根据delegateClassName创建一个delegate对象,并将该delegate对象赋值给UIApplication对象中的delegate属性

③ 接着会建立应用程序的Main Runloop(事件循环),进行事件的处理(首先会在程序完毕后调用delegate对象的application:didFinishLaunchingWithOptions:方法)

④ 程序正常退出时UIApplicationMain函数才返回

   1.根据传入的第三个参数,创建UIApplication对象
   2.根据传入的第四个产生创建UIApplication对象的代理
   3.设置刚刚创建出来的代理对象为UIApplication的代理
   4.开启一个事件循环(可以理解为里面是一个死循环)这个时间循环是一个队列(先进先出)先添加进去的先处理

<p>

B篇:(完整启动过程)

1.执行main 函数,调用 main 函数里的 UIApplicationMain 函数。

2.创建UIApplication
① 打开网页,发短信,打电话
② 设置应用程序提醒数字
③ 设置联网状态
④ 设置状态栏

3.创建AppDelegate代理对象,并且成为AppDelegate代理
① 监听整个App的生命周期
② 处理内存警告

4.开启主运循环,保证程序一直运行
① 每一个线程都有runloop
② 主线程有一个runloop

** 5.加载info.plist (判断是否加载了main.storyboard)**

视图的生命周期--->view:
视图的生命周期
上一篇下一篇

猜你喜欢

热点阅读