- (void)viewWillAppear:(BOOL)animated; 视图将要出现时,调用该方法
// Called when the view is about to made visible. Default does nothing
- (void)viewDidAppear:(BOOL)animated; 视图已经全部出现了,调用该方法
// Called when the view has been fully transitioned onto the screen. Default does nothing
- (void)viewWillDisappear:(BOOL)animated; 视图将要消失时
// Called when the view is dismissed, covered or otherwise hidden. Default does nothing
- (void)viewDidDisappear:(BOOL)animated; 视图已经消失时
// Called after the view was dismissed, covered or otherwise hidden. Default does nothing
被viewWillAppear、viewDidAppear小坑了一下,总结一下
1.现在有3个界面A、B、C如果你在A界面要推向B界面, (1)在A界面的viewwillappear推到界面B,如果你要从B界面推回A界面时,对不起没有A界面。
(2)在A界面的viewdidappear推到界面B,如果你要从B界面推回A界面时,A界面存在,可以推回
字面就看的出来区别了viewwillappear是说界面还没有显示,可以做一些界面相关的数据准备。
viewdidappear是界面已经显示完成了,如果这个时候再调整一些稍微耗时的界面设置操作就不是很合适吧。
2.生命周期里一个低内存的情况:
- (void)viewDidUnload
{
self.faceView = nil;
}
低内存的时候,系统会卸载你的view,将会把你的controller的view从内存中清除出去,也就是停止所有有strong指向的指针。
但是对应的viewController是不会从heap清除出去的。
但是,还是要把其他的outlet指针都设置为nil,因为,就怕其他的view有指向这个类型的strong指针,所以就不太一样了。所以要养成好习惯,把outlet型的指针设置为nil。
View Controller 生命周期图