为了方便描述 假设有两个视图控制器
一个AVC 一个BVC
通过navgationController的push实现AVC 到BVC的跳转
现在来看一下AVC 和 BVC生命周期的方法是怎样一个执行顺序。
1. AVC viewDidLoad
2. AVC viewWillAppear
3. AVC viewDidApper
4. BVC viewDidLoad
5. AVC viewWillDisappear
6. BVC viewWillAppear
7. AVC viewDidDisappear
8. BVC viewDidAppear
再来看看从BVC返回到AVC中 方法的执行顺序
1. BVC viewWillDisappear
2. AVC viewWillAppear
3. BVC viewDidDisappear
4. AVC viewDidAppear
其实在viewDidLoad之前还有个loadView的方法
当view需要被展示而它却是nil的时候 视图控制器就会调用loadView这个方法
什么时候执行viewDidLoad?
举例:AVC push 到了BVC 然后BVC 再pop回AVC 在pop回AVC时由于AVC里面的view和subViews已经存在里面了不需要重新加载 所以这个时候AVC不会再调用viewDidLoad这个方法 这里存在一种特殊的情况那就是当AVC push到 BVC时由于要加载BVC的视图内存刚好在这时候又不足了 那么系统会把AVC里的视图全部释放掉 这样当BVC pop 到AVC时 由于AVC里面的视图已经被释放了要重新加载这时就会调用viewDidLoad方法