- View Controller
- View controller 管理一个 view hierarchy ,它负责创建 view 对象以形成 hierarchy、处理该 hierarchy 中有关于 view 的事件、并且将该 hierarchy 添加到 window 中。
- View controller 有UIView *view 属性指向一个 view ,该 view 是该 controller 的 view hierarchy 的根。当该 view 被设置为 window 的 subview 时,整个 view controller 的 view hierarchy 也被加入到 window。
- View controller 的 view 直到它需要呈现在屏幕上才会被创建(惰性初始化以节约内存和提高性能)
- View controller 创建 view 的两种方式
- 编写代码覆写 controller 的 loadView 方法
- 当 view controller 创建时,它的 view 为 nil,当它需要 view 且此时 view 为 nil 时,view controller 就会被发送 loadView 消息。
- 在 Interface Builder 中加载 NIB 文件
- 编写代码覆写 controller 的 loadView 方法
- View controller 创建 view 的两种方式
- 最后将 view controller 设置为 window 的 rootViewController 就完成了整个过程
- NIB 的加载过程
- Interacting With View Controllers and Their Views
- Application:didFinishLaunchingWithOptions: 用于初始化并设置 application 的 root view。
该方法在应用启动的时候会被回调。即使应用切换,也不会被再次回调。
- initWithNibName:bundle: 该方法是 UIViewController 的 designated initializer。
当 view controller 实例被创建时,该方法会被回调。如果创建同一个 view controller class 的多个实例,该方法每次都会被回调。
- loadView: 覆写该方法以通过代码方式为该 view controller 创建 view。
- viewDidLoad 该方法会在 view 的 view controller 被创建后回调,它可以用来配置用 NIB 文件来加载的 view。
- viewWillAppear: 可以覆写该方法以配置用NIB文件来加载的 view
该方法和 viewDidAppear 在每次 view controller 呈现在屏幕上的时候都会被回调。
- viewWillDisappear: / viewDidDisappear: 这两个方法在 view controller 每次离开屏幕时都会被回调。
(区别于 viewDidLoad 只会在创建时被回调)
- View Controller 的生命周期
来自:http://blog.csdn.net/ryantang03/article/details/8264072
View的加载过程
View和View Controller的关系
View的卸载过程
- ViewController的生命周期中各方法执行流程如下:
init—>loadView—>viewDidLoad—>viewWillApper—>viewDidApper—>viewWillDisapper—>viewDidDisapper—>viewWillUnload->viewDidUnload—>dealloc