iOS,UIViewController和nib方法的載入順序
首先要知道IB是什麼鬼,
IB = interface builder,用來畫SB和NIB的,
檢視載入過程
第一步:initWithNibName
最先載入的方法,用來例項化UiViewController,是每個方法必須呼叫的函式,他的宣告如下
init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?)
引數:
nibName :
The name of the nib file to associate with the view controller. The nib file name should not contain any leading path information. If you specify nil, the nibName property is set to nil.
nibBundle :
The bundle in which to search for the nib file. This method looks for the nib file in the bundle's language-specific project directories first, followed by the Resources directory. If this parameter is nil, the method uses the heuristics described below to locate the nib file.
第二步:func LoadView()
- 當view需要被展示而它卻是nil時,viewController會呼叫該方法。不要直接呼叫該方法。
- 如果手工維護views,必須過載重寫該方法
- 如果使用IB維護views,必須不能過載重寫該方法
第三步:func viewDidLoad()
- 如果loadView不能生成UIViewController.view系統將會反覆呼叫loadView及viewDidLoad方法, 並且最終呼叫[super loadView] 方法返回UIViewController.view
- 過載重寫該方法以進一步定製view
- 在iPhone OS 3.0及之後的版本中,還應該過載重寫viewDidUnload來釋放對view的任何索引
- viewDidLoad後呼叫資料Model
在檢視載入後被呼叫,
- 如果是在程式碼中建立的檢視載入器,他將會在loadView方法後被呼叫,
- 如果是從nib檢視頁面輸出,他將會在檢視設定好後後被呼叫。
第四步:func viewWillAppear(_ animated: Bool)
push到另外的檢視,然後回來的時候被呼叫
第五步:func viewDidAppear(_ animated: Bool)
檢視已完全過渡到螢幕上時呼叫
檢視解除安裝過程
第一步:func viewWillDisappear(_ animated: Bool)
第二步:func viewDidDisappear(_ animated: Bool)
第三步:func didReceiveMemoryWarning()
**另外:當程式收到記憶體不足的警告後, 程式記憶體中的所有的UIViewController都將會收到didReceiveMemoryWarning呼叫訊息. 目的是將當前不顯示的UIViewController中的view釋放掉(不會呼叫UIViewController的dealloc方法), 所以當該UIViewController再次顯示的時候又要生成一次, 此時它會呼叫loadView-> viewDidLoad ->viewWillAppear等, 這時最容易造成記憶體洩漏!
**
如果是載入nib檔案的話:
當.nib檔案被載入的時候,會傳送一個awakeFromNib的訊息到.nib檔案中的每個物件,每個物件都可以定義自己的awakeFromNib函式來響應這個訊息,執行一些必要的操作。也就是說通過nib檔案建立view物件時執行awakeFromNib
相關文章
- iOS程式執行順序和UIViewController 的生命週期(整理)iOSUIViewController
- javascript載入順序JavaScript
- java類載入順序Java
- [Web]HTML載入順序WebHTML
- Java父子類載入順序Java
- 頁面載入順序jQueryjQuery
- windows驅動載入順序Windows
- js——<script>標籤的載入順序JS
- 影像延遲載入 && 列表圖順序載入
- SpringBoot配置檔案優先順序載入順序Spring Boot
- iOS UITableView Cell和 SectionHeader 的呼叫順序iOSUIViewHeader
- OC 中非同步順序載入用法非同步
- Script載入順序 & 外部樣式表的阻塞
- 關於jvm載入類的實現順序JVM
- UITableView停止載入中的動畫的順序問題UIView動畫
- 演算法題———————輸入棧的入棧順序和出棧順序判斷是否合理演算法
- web.xml 檔案 配置載入順序WebXML
- [springboot]配置檔案載入順序Spring Boot
- 物件導向 -- 類的載入順序 類和物件的名稱空間物件
- 詳解web.xml中元素的載入順序WebXML
- Javascript在頁面載入時的執行順序JavaScript
- Tomcat的class載入的優先順序一覽Tomcat
- 列定義的順序和列儲存的順序
- 類script標籤,非同步載入,順序執行非同步
- 效能優化之html、css、js三者的載入順序優化HTMLCSSJS
- web.xml 中的listener、 filter、servlet 載入順序及其詳解WebXMLFilterServlet
- JVM類載入機制與類初始化順序JVM
- 載入資料順序對HASH SORT CLUSTER效能影響
- 靜態順序表和動態順序表 對比
- 微信聊天表情順序設定方法 微信表情順序怎麼調?
- Python的方法解析順序(MRO)[轉]Python
- oracle更改欄位名順序的方法Oracle
- tomcat啟動或,struts2需要載入哪些配置檔案,載入順序Tomcat
- margin和border簡寫的順序
- 各類運算子和計算方法,優先順序
- load 和 initialize 方法的執行順序以及類和物件的關係物件
- 如何正確控制springboot中bean的載入順序總結Spring BootBean
- MapStruct與lombok載入順序問題與annotationProcessorPaths的關係?StructLombok