?
init方法
?
在init方法中實例化必要的對象(遵從LazyLoad思想)
?init方法中初始化ViewController本身
?
loadView方法
?
當view需要被展示而它卻是nil時,viewController會調用該方法。不要直接調用該方法。
如果手工維護views,必須重載重寫該方法
如果使用IB維護views,必須不能重載重寫該方法
loadView和IB構建view
?
viewDidLoad方法
?
重載重寫該方法以進一步定制view
在iPhone OS 3.0及之后的版本中,還應該重載重寫viewDidUnload來釋放對view的任何索引
viewDidLoad后調用數據Model
?
viewDidUnload方法?
?
當系統內存吃緊的時候會調用該方法(注:viewController沒有被dealloc)
內存吃緊時,在iPhone OS 3.0之前didReceiveMemoryWarning是釋放無用內存的唯一方式,但是OS 3.0及以后viewDidUnload方法是更好的方式
在該方法中將所有IBOutlet(無論是property還是實例變量)置為nil(系統release view時已經將其release掉了)
在該方法中釋放其他與view有關的對象、其他在運行時創建(但非系統必須)的對象、在viewDidLoad中被創建的對象、緩存數據等 release對象后,將對象置為nil(IBOutlet只需要將其置為nil,系統release view時已經將其release掉了)
一般認為viewDidUnload是viewDidLoad的鏡像,因為當view被重新請求時,viewDidLoad還會重新被執行
viewDidUnload中被release的對象必須是很容易被重新創建的對象(比如在viewDidLoad或其他方法中創建的對象),不要release用戶數據或其他很難被重新創建的對象
?
?
viewDidLoad總是在loadView之后調用,不管你是不是通過nib文件創建的,這個方法總是會被調用的。
viewDidUnload在收到內存警告的時候調用,在我的理解,這個方法里面應該做幾件事情:
1、釋放掉一些比較容易創建的對象,或者是一些比較占資源的對象(圖片、音頻等)
2、如果界面控件自己保持了引用計數,這里也要釋放掉。(比如說,這個控件被設成了屬性,而且是retain的,這個retain的引用計數就必須釋放掉)
3、如果跨類的參數傳遞機制會在viewDidUnload以后產生不正常的效果,這里也必須處理。
?
dealloc方法
?
viewDidUnload和dealloc方法沒有關聯,dealloc還是繼續做它該做的事情
?
流程:
?
(loadView/nib文件)來加載view到內存 ——>viewDidLoad函數進一步初始化這些view ——>內存不足時,調用viewDidUnload函數釋放views?—->當需要使用view時有回到第一步, 如此循環。
?
?
?
在iphone里你看到的,摸到的,都是UIView,所以UIView在iphone開發里具有非常重要的作用。 視圖和窗口展示了應用的用戶界面,同時負責界面的交互。UIKit和其他系統框架提供了很多視圖,你可以就地使用而幾乎不需要修改。當你需要展示的內容與標準視圖允許的有很大的差別時,你也可以定義自己的視圖。
不管你是使用系統的視圖還是創建自己的視圖,你需要理解UIView和UIWindow類所提供的基本結構。這些類提供了復雜的方法來管理視圖的布局和展示。理解這些方法的工作非常重要,使你在應用發生改變時可以確認視圖有合適的行為。
?
視圖架構?
大部分你想要可視化操作都是由視圖對象-即UIView類的實例-來進行的。一個視圖對象定義了一個屏幕上的一個矩形區域,同時處理該區域的繪制和觸屏事件。一個視圖也可以作為其他視圖的父視圖,同時決定著這些子視圖的位置和大小。UIView類做了大量的工作去管理這些內部視圖的關系,但是需要的時候你也可以定制默認的行為。
?
視圖與層聯合起來處理著視圖內容的解釋和動畫過渡。每個UIKit框架里的視圖都被一個層對象支持(通常是一個CALayer類的實例),它管理管理著后臺的視圖存儲和處理視圖相關的動畫。然而,當你需要對視圖的解釋和動畫行為有更多的控制權時,你可以使用層。
?
為了理解視圖和層之間的關系,我們可以借助于一些例子。應用中的視圖包括了一個window(同時也是一個視圖),一個通用的表現得像一個容器視圖的UIView對象,一個圖像視圖,一個控制顯示用的工具條,和一個工具條按鈕(它本身不是一個視圖但是在內部管理著一個視圖)。(注意這個應用包含了一個額外的圖像視圖,它是用來實現動畫的)。為了簡化,同時因為這個視圖通常是被隱藏的,所以沒把它包含在下面的圖中。每個視圖都有一個相應的層對象,它可以通過視圖礶r屬性被訪問。(因為工具條按鈕不是一個視圖,你不能直接訪問它的層對象。)
?
?
?
UIView的一些基本方法 init、loadView、viewDidLoad、viewDidUnload、dealloc
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
