iOS 应用程序生命周期

iOS 应用程序一般都是由自己编写的代码和系统框架(system frameworks)组成,系统框架提供一些基本infrastructure给所有 app 来运行,而你提供自己编写的代码来定制app的外观和行为。因此,了解iOS infrastructure 和它们如何工作对编写app是很有帮助的。iOS 应用程序的启动执行顺序启动顺序首先,来了解一下这张图 以上,就
摘要由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  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值