经常面试的人都知道有的面试官会问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
未完
网友评论