iOS,深入了解控制器view的加载

经常面试的人都知道有的面试官会问loadview有什么作用,它与viewdidload有什么区别。

首先我们应该知道控制器view是通过懒加载方式进行加载,就是用到的时候再加载

1.loadview方法

当我们用到控制器view的时候,就会调用控制器view的get方法,在get方法内部,首先判断view是否创建,如果存在,直接返回存在的view.如果不存在,则调用控制器的loadview方法,在控制器没有被销毁的情况下,loadview也可能被多次执行。

2.viewdidload方法

当控制器loadview方法加载完毕,view被创建成功会,会执行viewdidload,该方法与loadview方法一样,也有可能执行多次。

那么问题来了,在什么情况下会执行多次。

比如A控制器pushB控制器,当窗口显示B控制器的view,如果收到内存警告,我们一般会将A控制器中没用的变量及view销毁点。当B控制器pop到A控制器的时候。就会再次执行A控制器中的loadview和viewdidload方法。

控制器view的加载

1.控制器通过storyboard加载时,需要指定storyboard的名称,控制器view最终就是storyboard描述的样子。比较简单,不做详细介绍?

2.控制器view通过xib加载

控制器view通过xib加载的时候,可能会出现三种情况

a.指定xib名称

当我们指定xib名称后,loadview方法就会加载对应的xib,

b 不指定xib名称

如果我们不指定xib名称,loadview就会加载与控制器同名的xib

c 不指定xib名称

当没有指定xib名称,且没有与控制器同名的xib,会加载前缀与控制器名相同而不带controller的xib

未完

你可能感兴趣的:(iOS,深入了解控制器view的加载)