2019/01/07 22:11
一、view生命周期
1、loadView
loadView办法负责创立UIViewController的view,每次拜访UIViewController的view,比方controller.view、self.view,且view为nil,就会调用loadView办法。
对于[super loadView]中的默认实现:(1)首先去查找与UIViewController相关联的xib文件,通过加载xib文件来创立UIViewController的view;(2)如果没有找到关联的xib文件,就会创立一个空白的UIView,而后赋值给UIViewController的view属性。
2、viewDidLoad
loadView实现view创立后,会调用此办法,一般来说,咱们会在此处进行初始化的相干操作。
3、viewWillAppear
试图行将呈现。
4、viewWillLayoutSubviews
倡议布局试图在此处进行,这个办法会对所有试图进行真正的布局,包含self.view。
大部分状况下试图的布局代码写在viewDidLoad中没有问题,因为最终也是到这里进行布局操作的;然而多数状况下,这会导致一些奇怪的问题,尤其对于XIB而言,因为在 viewDidLoad 和 viewWillAppear 中,试图还是默认XIB的大小,在此办法中才会布局正确。
5、viewDidLayoutSubviews
试图布局实现。
6、viewDidAppear
试图曾经呈现。
7、viewWillDisappear
试图行将隐没。
8、viewDidDisappear
试图曾经隐没。
9、viewDidUnload
这个比拟非凡。
设施的内存是无限的,如果应用程序占用的内存过多,零碎就会对应用程序收回内存正告,UIViewController就会收到didReceiveMemoryWarning音讯。
didReceiveMemoryWarning办法的默认实现是:如果以后UIViewController的view不在应用程序的视图层次结构(View Hierarchy)中,即view的superview为nil的时候,就会将view开释,并且调用viewDidUnload办法。
所以个别在开释资源,次要是开释界面元素相干的资源,将相干的实例都赋值为nil
- (void)viewDidUnload { [super viewDidUnload]; self.name = nil; self.pwd = nil; }
二、xib
1、initWithCoder:
将援用和内容文件从xib文件中加载到内存中
2、setValue:forKey:
将outlet中制订的各个新属性
3、addTarget:action:forControlEvents:
将xib中定制的手势交互等办法进行解决
4、bind:toObject:withKeyPath:options:
连贯对象
5、awakeFromNib
加载结束。