长路漫漫,唯剑作伴--loadView、viewDidLoad及viewDidUnload的关系
生活随笔
收集整理的這篇文章主要介紹了
长路漫漫,唯剑作伴--loadView、viewDidLoad及viewDidUnload的关系
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、loadView
什么時候被調用?
- 每次訪問UIViewController的view(比如controller.view、self.view)而且view為nil,loadView方法就會被調用。
有什么作用?
- loadView方法是用來負責創建UIViewController的view
默認實現是怎樣的?
它會先去查找與UIViewController相關聯的xib文件,通過加載xib文件來創建UIViewController的view
- 如果在初始化UIViewController指定了xib文件名,就會根據傳入的xib文件名加載對應的xib文件 [[MJViewController alloc] initWithNibName:@"MJViewController" bundle:nil];
- 如果沒有明顯地傳xib文件名,就會加載跟UIViewController同名的xib文件 [[MJViewController alloc] init]; // 加載MJViewController.xib
如果沒有找到相關聯的xib文件,就會創建一個空白的UIView,然后賦值給UIViewController的view屬性,大致如下
self.view = [[[UIView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame] autorelease];?
怎樣正確使用這個方法?
?
?
二、viewDidLoad
什么時候被調用?
- 不過你是通過xib文件還是重寫loadView創建UIViewController的view,在view創建完畢后,最終都會調用viewDidLoad方法
有什么作用?
- 一般我們會在這里做界面上的初始化操作,比如往view中添加一些子視圖、從數據庫或者網絡加載模型數據裝配到子視圖中。
三、viewDidUnload
什么時候被調用?
- ios設備的內存是極其有限的,如果應用程序占用的內存過多的話,系統就會對應用程序發出內存警告。UIViewController就會收到didReceiveMemoryWarning消息。didReceiveMemoryWarning方法的默認實現是:如果當前UIViewController的view不在應用程序的視圖層次結構(View Hierarchy)中,即view的superview為nil的時候,就會將view釋放,并且調用viewDidUnload方法
有什么作用?
- 上面說到,發出內存警告且view被釋放的時候就會調用viewDidUnload方法,所以一般在釋放資源,主要是釋放界面元素相關的資源,將相關的實例都賦值為nil - (void)viewDidUnload { [super viewDidUnload]; self.name = nil; self.pwd = nil; }
dealloc也是用來釋放資源的,那跟viewDidUnload有什么關系?
- 當發出內存警告調用viewDidUnload方法時,只是釋放了view,并沒有釋放UIViewController,所以并不會調用dealloc方法。即viewDidUnload和dealloc方法并沒有任何關系,dealloc方法只會在UIViewController被釋放的時候調用
?四、三個方法的關系
-
第一次訪問UIViewController的view時,view為nil,然后就會調用loadView方法創建view
-
view創建完畢后會調用viewDidLoad方法進行界面元素的初始化
-
當內存警告時,系統可能會釋放UIViewController的view,將view賦值為nil,并且調用viewDidUnload方法
-
當再次訪問UIViewController的view時,view已經在3中被賦值為nil,所以又會調用loadView方法重新創建view
-
view被重新創建完畢后,還是會調用viewDidLoad方法進行界面元素的初始化
?
轉載于:https://www.cnblogs.com/zhuyiios/p/6674659.html
總結
以上是生活随笔為你收集整理的长路漫漫,唯剑作伴--loadView、viewDidLoad及viewDidUnload的关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 短视频网站源码干货分享:如何实现背景音乐
- 下一篇: 启动图一键生成工具_一键即运行!清华团队