关于ios:iOS-view生命周期

3次阅读

共计 1239 个字符,预计需要花费 4 分钟才能阅读完成。

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

加载结束。

正文完
 0