1、init里不要出现创建view的代码。良好的设计,在init里应该只有相关数据的初始化,而且这些数据都是比较关键的数据。init里不要调self.view,否则会导致viewcontroller创建view。(因为view是懒init的)。
2、loadView中只初始化view,一般用于创建比较关键的view如tableViewController的tabView,UINavigationController的navgationBar,不可调用view的getter(在调super loadView前),最好也不要初始化一些非关键的view。如果是从nib文件中创建的viewController在这里一定要首先调用super的loadView方法,但建议不要重载这个方法。
3、viewDidLoad 这时候view已经有了,最适合创建一些附加的view和控件了。有一点需要注意的是,viewDidLoad会调用多次(viewcontroller可能多次载入view)。
4、viewWillAppear 这个一般在view被添加到superview之前,切换动画之前调用。在这里可以进行一些显示前的处理。比如键盘弹出,一些特殊的过程动画(比如状态条和navigationbar颜色)。
5、viewDidAppear 一般用于显示后,在切换动画后,如果有需要的操作,可以在这里加入相关代码。
6、viewDidUnload 这时候viewController的view已经是nil了。由于这一般发生在内存警告时,所以在这里你应该将那些不在显示的view释放了。比如你在viewcontroller的view上加了一个label,而且这个label是viewcontroller的属性,那么你要把这个属性设置成nil,以免占用不必要的内存,而这个label在viewDidLoad时会重新创建。
init: 开始初始化相应的ViewController
loadView:创建视图控制器(如果不是从.xib加载)
viewDidLoad:视图已加载(一般初始化必要的数据)
viewWillAppear:视图加载前运行
viewWillDisappear:视图消失前(被关闭或覆盖)运行
willRotateToInterfaceOrientation:duration:开始旋转时运行
didRotateToInterfaceOrientation:旋转结束时运行
loadView和viewDidLoad的区别:
loadView在视图初始化的时候调用,应用开启后只调用一次
viewDidLoad在每次进入一个视图的时候都会调用
- (void)didReceiveMemoryWarning
当系统内存警告的时候调用的方法,我们一般在该方法释放消耗资源的对象。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
用于处理屏幕旋转的方法。
- (void)viewDidUnload
视图对象卸载的使用调用的方法,一般在把内存视图中的属性设置为nil值。