IOS UI 控制器的生命週期

2021-09-07 05:55:43 字數 2017 閱讀 2742

一、控制器的生命週期

**

1

@inte***ce

njoneviewcontroller ()

23 @property (nonatomic, strong) nsarray *foods;

4@end56

@implementation

njoneviewcontroller78

//當控制器的view載入完畢就呼叫

9 - (void

)viewdidload

1014

15//

控制器的view即將顯示的時候呼叫

16 - (void

1721

22//

控制器的view完全顯示的時候呼叫

23 - (void

2428

29//

控制器的view即將消失的時候呼叫

30 - (void

3135

//控制器的view完全消失的時候呼叫

36 - (void

3741

42//

控制器的view即將銷毀的時候呼叫

43 - (void

)viewwillunload

4447

//控制器的view完全銷毀的時候呼叫

48 - (void

)viewdidunload

4955

56//

- (void)setfoods:(nsarray *)foods

57//

62//}63

64//

接收到記憶體警告的時候呼叫

65 - (void

)didreceivememorywarning

6669

/**/

7071

@end

三個重要方法

1

//控制器的view即將銷毀的時候呼叫

2 - (void

)viewwillunload36

//控制器的view完全銷毀的時候呼叫

7 - (void

)viewdidunload814

15//

接收到記憶體警告的時候呼叫

16 - (void

)didreceivememorywarning

17

補充:

兩個記憶體警告的區別(和**中得比較):

需要了解它的父類是如何處理記憶體警告的。

模擬記憶體警告:

記憶體警告的處理示意圖:

控制器的view是否可以銷毀?它怎麼知道是否可以銷毀呢?如何判斷?它是判斷這個view是否是在windows上面。

當前one控制器在棧頂,one控制器對應的view顯示在window上,如果此時發生記憶體警告,那麼one因為在window上面,所以不會被銷毀。

若此時再來乙個two控制器,它建立對應的twoview顯示到window上,one對應的view移開了,此時如果發生記憶體警告,則此時oneview已經不再在window上顯示,所以會被銷毀。

特別說明:outlet代表著屬性,當控制器建立的時候,屬性一般也是有值的,當呼叫了- (void)viewdidunload方法以後,即控制器的view完全銷毀了以後,所有的屬性資料會清空。一般在ios5以前,還會在這個方法裡面清空裡面的所有屬性。

控制器的生命週期

import mjoneviewcontroller.h inte ce mjoneviewcontroller property nonatomic strong nsarray property nonatomic strong nsarray persons end implementatio...

控制器的生命週期

關於viewdidunload 在發生記憶體警告的時候如果本檢視不是當前螢幕上正在顯示的檢視的話,viewdidunload將會被執行,本檢視的所有子檢視將被銷毀,以釋放記憶體,此時開發者需要手動對viewload viewdidload中建立的物件釋放記憶體。因為當這個檢視再次顯示在螢幕上的時候,...

控制器的生命週期

當乙個檢視控制器被建立,並在螢幕上顯示的時候。的執行順序 1 alloc建立物件,分配空間 2 init initwithnibname 初始化物件,初始化資料 3 loadview從nib載入檢視,通常這一步不需要去干涉。除非你沒有使用xib檔案建立檢視 4 viewdidload載入完成,可以進...