iOS 应用程序生命周期

本文详细介绍了iOS应用程序的启动执行顺序,包括程序入口、AppDelegate类及其在不同状态下的调用方法。同时,探讨了iOS应用的五种状态:未运行、未激活、激活、后台和挂起。此外,还解析了视图的生命周期,包括UIViewController的方法调用顺序,如viewDidLoad、viewWillAppear等,以及loadView和viewDidLoad的区别。
摘要由CSDN通过智能技术生成

iOS 应用程序一般都是由自己编写的代码和系统框架(system frameworks)组成,系统框架提供一些基本infrastructure给所有 app 来运行,而你提供自己编写的代码来定制app的外观和行为。因此,了解iOS infrastructure 和它们如何工作对编写app是很有帮助的。

iOS 应用程序的启动执行顺序

启动顺序

首先,来了解一下这张图
iOS 程序启动图
以上,就是一个应用程序的执行顺序。接下来,让我们具体的了解一下这个流程
1. 程序入口:
执行 main 函数,设置 AppDelegate 称为函数的代理
2. 程序完成加载
[AppDelegate application:didFinishLaunchingWithOptions:]
3. 创建 window 窗口
4. 程序被激活
[AppDelegate applicationDidBecomeActive:]
5. 当点击 home 键时:
程序取消激活状态
[AppDelegate applicationWillResignActive:]
程序进入后台
[AppDelegate applicationDidEnterBackground:]
6. 点击进入项目工程中:
程序进入前台
[AppDelegate applicationWillEnterForeground:]
程序重新激活
[AppDelegate applicationDidBecomeActive:]

iOS 程序的状态

从上面的这个流程,我们可以发现它包括几个状态:后台、前台、激活、未激活。其实,iOS的应用程序共有5种状态:

  • Not running(未运行):程序未启动
  • Inactive(未激活):其他两个状态切换时出现的短暂状态。当用户锁屏或者系统提示用户去响应 Alert窗口(如来电、信息等)时
  • Active(激活):在屏幕下显示正常的运行状态,该状态下可以接受用户输入并及时更新显示
  • Background(后台)::程序在后台且能执行代码。用户按下Home键不久后进入此状态(先进入了Inactive状态,再进入Background状态),然后会迅速进入挂起状态(Suspended)。有的程序经过特殊的请求后可以长期处于Backgroud状态
  • Suspended (挂起):程序在后台不能执行代码。普通程序在进入Background状态不久后就会进入此状态。当挂起时,程序还是停留在内存中的,当系统内存低时,系统就把挂起的程序清除掉,为前台程序提供更多的内存

转换过程如图:
状态转换

程序的入口

首先,下面的函数就是我们经常看到的 main 函数

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

main函数的两个参数,iOS中没有用到,包括这两个参数是为了与标准ANSI C保持一致。我们接着看 UIApplicationMain 的参数,前两个和 main 函数的相同,重点是后面的两个,在官方文档中是这样说明的。

/ If nil is specified for principalClassName, the value for NSPrincipalClass from the Info.plist is used. If there is no  
// NSPrincipal
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值