在程序生命周期的关键点,消息被发送给应用程序中的对象,以便让这些对象知道发生了什么事情。当用户按了Home键时,IOS上的程序实际上并没有真正结束,而是进入了后台挂起状态。
。程序状态
我们程序的核心是main函数。当我们基于相应的模板创建工程时,Xcode会自动帮我创建该函数,通常我们都不需要做任何更改。那么它的作用是什么呢?
它的作用是作为应用程序的入口,在进入这个入口后把控制权转交给UIkit framework中的一个类。
每个iOS应用程序都必须有一个类实现了UIApplicationDelegate协议。这个类就是应用程序代理对象,它负责监控应用程序的高层行为。应用程序代理对象必须实现一些UIApplicationDelegate协议中的关键方法,这些方法是用来处理一些关键事件的。
在面向对象方法学中 ,代理是一个实现了一些方法的对象,这些方法被另一个对象按需调用。
iOS所有程序状态如下:
未运行 | 应用程序当前未启动 |
未激活 |
应用程序在运行,但不接收任何事件。当一个应用程序正要从一个状态转换到另一个状态时,就处于未激活状态,处于这个状态的时间 是很短的。应用程序保持未激活状态一段时间的情况只有在系统提示用户对某些事件,例如来电、新信息进行相应反应时。 |
激活 | 程序正在运行并接收事件 |
后天 | 应用程序在后天运行。通常不直接和用户交互。 |
挂起 | 不执行任何代码,处于等待状态。 |
在启动时,一个程序从未运行状态装换到激活或后台状态。
应用程序代理协议的方法调用顺序如下:
didFinishLaunchingWithOptions
applicationDidBecomeActive
applicationDidEnterBackground
xcode通常会提供这些方法的默认实现。