一、調用順序:
1. + (id)alloc 分配內存;
2. - (id)init 方法(包括其他-(id)init...方法),只允許調用一次,並且要與 alloc方法 寫在一起,在init方法中申請的內存,要在dealloc方法中釋放(或者其他地方);
3. - (void)awakeFromNib 使用Xib初始化後會調用此方法,一般不會重寫此方法;
4. - (void)loadView 如果使用Xib創建ViewController,就不要重寫該方法。一般不會修改此方法;
8. - (void)viewWillDisappear:(BOOL)animated view 將要隱藏的時候,可以在此將一些佔用內存比較大的資源先釋放掉,在 viewWillAppear: 中重新加載。如:圖片/聲音/視頻。如果View已經隱藏而又在內存中保留這些在顯示前不會被調用的資源,那麼App閃退的機率會增加,尤其是ViewController比較多的時候;
9. - (void)viewDidAppear:(BOOL)animated view 已經隱藏的時候;
10. - (void)dealloc,不要手動調用此方法,當引用計數值爲0的時候,系統會自動調用此方法。
二、使用 NavigationController 去 Push 切換顯示的View的時候,調用的順序:
例如 從 A 控制器 Push 顯示 B 控制器,
[(A *)self.navigationController pushViewController:B animated:YES]
1. 加載B控制器的View(如果沒有的話);
2. 調用 A 的 - (void)viewWillDisappear:(BOOL)animated;
3. 調用 B 的 - (void)viewWillAppear:(BOOL)animated;
4. 調用 A 的 - (void)viewDidDisappear:(BOOL)animated;
5. 調用 B 的 - (void)viewDidAppear:(BOOL)animated;
總結來說,ViewController 的切換是先調用 隱藏的方法,再調用顯示的方法;先調用Will,再調用Did。
三、重新佈局View的子View
- (void)viewWillLayoutSubviews
- (void)viewDidLayoutSubviews
看字面意思就知道這兩個方法是在View對他的子View進行佈局的時候會被調用,包括View 顯示/隱藏/屏幕旋轉 的時候都會被調用。
如果設計的應用需要支持多方向可以在這裏面進行一些UI的橫豎屏適配。