參考:
關於view載入的過程,包括loadview,viewwillunload,viewdidunload,viewdidload,isviewload等,下面一一會講解
loadview
1.什麼時候被呼叫?
每次訪問uiviewcontroller的view(比如controller.view,self.view)而且view為nil,loadview方法就會被呼叫
2.有什麼作用?
loadview方法是用來負責建立uiviewcontroller的view
3.預設實現是怎樣的?
預設實現即[super loadview]裡面做了什麼事情
1>它會先去查詢與uiviewcontroller相關聯的xib檔案,通重載入xib檔案來建立uiviewcontroller的view
如果在初始化uiviewcontroller指定了xib檔名,就會根據載入的xib檔名載入對應的xib檔案
[[mjviewcontroller alloc]initwithnibname:@"mjviewcontroller" bundle:nil];
如果沒有明顯的傳xib檔名,就回家再跟uiviewcontroller同名的xib檔案
[[mjviewcontroller alloc]init];//載入mjviewcontroller.xib
2>如果沒有找到相關聯的xib的檔案,就會建立乙個空白的uiview,然後賦值給uiviewcontroller的view屬性,大致如下
4.怎樣正確使用這個方法
大家都知道uiviewcontroller的view可以通過xib檔案來建立,但在某些情況下,xib不是那麼地靈活,所以有時候我們想通過**來建立uiview
如果想通過**來建立uiviewcontroller的view,就要重寫loadview方法,並且不需要呼叫[super loadview],因為在第三點裡面已經提到:如果沒有xib檔案[super loadview]缺省會建立乙個空白uiview。我麼既然要通過**來自定義uiview,那麼就沒必要建立乙個空白的uiview,以節省不必要的開銷。正確的做法應該是:
-(void)loadview{
不需要呼叫[super loadview],呼叫也沒有錯,只是造成了一些不必要的開銷
總結一句話,蘋果設計這個方法就是給我們自定義uiviewcontroller的view用的
viewdidload
1.什麼時候被呼叫?
無論你是通過xib檔案還是重寫loadview方法建立uiviewcontrolle的view,在view建立完畢後,最終都會呼叫viewdidload方法
2.有什麼作用?
一般我們會在這裡面做介面上的初始化操作,比如往view中新增一些子檢視、從資料庫或者網路載入模型資料裝配到子檢視中。
-(void)viewdidload{
[super viewdidload];
//新增乙個按鈕
uibutton *button = [uibutton buttonwithtype:uibuttontypecontactadd];
[button addtarget:self action:@selector(click) forcontroleventtouchupinside];
[self.view addsubview:button];
viewdidunload
1.什麼時候被呼叫?
ios裝置的記憶體是及其有限的,如果應用程式占用的記憶體過多的話,系統就會對應用程式發出記憶體警告。uiviewcontroller就會收到didreceivememorywarning訊息。
didreceivememorywarning方法的預設實現是:如果當前uiviewcontroller的view不在應用程式的檢視層次結構(view hierarchy)中,即view的superview為nil的時候。
就會將view釋放,並且呼叫viewdidunload方法。
2.有什麼用?
上面說到,發出記憶體警告且view被釋放的時候就會呼叫viewdidunload方法,所以一般在釋放資源,主要是釋放介面元素相關的資源,將相關的例項都賦值為nil
-(void)viewdidunload{
[super viewdidunload];
self.name = nil;
self.pwd = nil;
3.dealloc也是用來釋放資源的,那跟viewdidunload有什麼關係?
當發出記憶體警告呼叫viewdidunload方法時,只是釋放了view,並沒有釋放uiviewcontroller,所以並不會呼叫dealloc方法,即viewdidunload和dealloc方法並沒有任何關係,dealloc方法只會在uiviewcontroller被釋放的時候呼叫
三個方法的關係
1.第一次訪問uiviewcontroller的view時,view為nil,然後就會呼叫loadview方法建立view
2.view建立完畢後會呼叫viewdidload方法進行介面元素的初始化
3.當記憶體警告時,系統可能會釋放uiviewcontroller的view,將view賦值為nil,並且呼叫viewdidunload方法
4.當再次訪問uiviewcontroller的view時,view已經在3中被賦值為nil,所以又會呼叫loadview方法建立view
5.view被重新建立完畢後,還是呼叫viewdidload方法進行介面元素的初始化
discuz涉及到的問題
其中 設定創始人 config global.php 修改 config admincp founder 1,511314 其中門戶管理中同步登陸 在discuz panel修改 construct將tbl common admincp session表中的 errorcount置為 1 panel...
微控制器開發涉及到的幾個概念
1.什麼是 dsp中的 內部上拉 和 內部下拉 dsp中介紹引腳時,註明pu,pd說是 內部上拉 和 內部下拉 就是說內部已經配置了接電源的 上拉電阻或是接地的下拉電阻。這樣,當作 為輸入埠連線oc或 coms 晶元或浮空時。訊號線平 是確定的高 低電 平。而不是不確定的浮地電平。內部上拉,相當於輸...
專案管理涉及到的文件
業務聯絡函 業務需求說明書 立項報告 立項評審報告 專案實施方案 專案組通訊錄 專案計畫與執 況跟蹤 需求規格說明書 系統介面規格說明書 總體設計 系統建設整體解決方案 軟體配置管理計畫 軟體質量保證計畫 編碼規範 源 sit測試報告和測試用例 uat測試報告和測試用例 效能測試方案與報告 上線實施...