iOS中的生命周期
iOS中的生命周期
[toc]
APP 生命周期
五种状态

状态转换
App 在5种状态间的转换流程图

发生状态转换时大多数都会调用 delegate
对象对应的方法来响应 app 的状态改变,下面是 delegate
对象的方法:
application:willFinishLaunchingWithOptions:
这个方法是你在启动时的第一次机会来执行代码application:didFinishLaunchingWithOptions:
这个方法允许你在显示 app 给用户之前执行最后的初始化操作
application:willFinishLaunchingWithOptions、application:didFinishLaunchingWithOptions 这两个方法越简单越好,因为 app 从启动到可以响应的时间越短越好,非必要的事情可以延迟或者起子线程执行,超过五秒没有完成这两个函数,系统将 kill app
applicationDidBecomeActive:
app 已经切换到 active 状态后需要执行的操作applicationWillResignActive:
app 将要从前台切换到后台时需要执行的操作applicationDidEnterBackground:
app 已经进入后台后需要执行的操作(该方法需要五秒内返回,否则应用程序被终止并从内存中清除)applicationWillEnterForeground:
app 将要从后台切换到前台需要执行的操作,但 app 还不是 active 状态applicationWillTerminate:
app 将要结束时需要执行的操作
注意事项
与 app 生命周期有关的几个时间规则
其中,对启动时间的限制是为了追求更好的用户体验,而其它几项基本是为了更好地管理、使用系统有限的资源。
application:willFinishLaunchingWithOptions
及 application:didFinishLaunchingWithOptions
的第二个参数 launchOptions
准确记录了 app 启动原因以及相应的参数信息。如,若 launchOptions
中存在以UIApplicationLaunchOptionsURLKey
为 key 的键值对,表明 app 是由 openurl 启动的。
UIViewController 及其生命周期
前言
在 iOS 开发中 UIViewController
扮演者非常重要的角色,它是视图 view
和数据 model
的桥梁,通过 UIViewController
的管理有条不紊的将数据展示在视图上。作为 UIKit 中最基本的一个类,一般复杂的项目都离不开 UIViewController
作为基类。所以了解 UIViewController
的整个生命周期是有必要的。
生命周期
- loadView()
- view 就加载出来了 可以在这里直接替换 View 比如你把这个 View 转换成了 tableView
- viewDidLoad()
- view 完成加载
- viewWillAppear(_ animated: Bool)
- view 即将显示
- viewWillLayoutSubviews()
- 将要开始布局子 view
- 当页面发生布局改变的时候会调用这个方法 会多次调用
- 同 LayoutSubviews Cell 的
- viewDidLayoutSubviews()
- 已经布局子 view
- 上面方法完成就会调这个
- viewDidAppear(_ animated:Bool)
- view 完成显示
7.viewWillDisappear
- view 将要消失
8.viewDidDisappear
- view 完成消失