ios基礎 ViewController 生命週期

2022-09-11 07:09:09 字數 4572 閱讀 4960

viewcontroller是ios應用程式中重要的部分,是應用程式資料和檢視之間的重要橋梁,viewcontroller管理應用中的眾多檢視。ios的sdk中提供很多原生viewcontroller,以支援標準的使用者介面,例如表檢視控制器(uitableviewcontroller)、導航控制器(uin**igationcontroller)、標籤欄控制器(uitabbarcontroller)和ipad專有的uisplitviewcontroller等。

按結構可以對ios的所有viewcontroller分成兩類:

1、主要用於展示內容的viewcontroller,這種viewcontroller主要用於為使用者展示內容,並與使用者互動,如uitableviewcontroller,uiviewcontroller。

2、用於控制和顯示其他viewcontroller的viewcontroller。這種viewcontroller一般都是乙個viewcontroller的容器。如uin**igationcontroller,uitabbarcontroller。它們都有乙個屬性:viewcontrollers。其中uin**igationcontroller表示一種stack式結構,push乙個viewcontroller或pop一次,因此後乙個viewcontroller一般會依賴前乙個viewcontroller。而uitabbarcontroller表示乙個array結構,各個viewcontroller是並列的。

uiviewcontroller可以使用兩種方式建立,1、xib方式,2、**方式

1)xib方式

didfinishlaunchingwithoptions方法中載入xib檔案。

self.window = [[uiwindow alloc] initwithframe:[[uiscreen mainscreen] bounds]];

self.window.backgroundcolor = [uicolor whitecolor];

mainuiviewcontroller *vc=[[mainuiviewcontroller alloc]initwithnibname:@"mainuiviewcontroller" bundle:nil];

self.window.rootviewcontroller=vc;

[self.window makekeyandvisible];

return yes;

載入xib檔案後,在xib檔案拖拽幾個控制項可看到效果。

2)**建立

建立view

- (void)loadview
前面寫了ios應用程式的生命週期,這裡會寫到viewcontroller的生命週期,這個更像android的activity的生命週期(見文章最後的圖)。viewcontroller生命週期會經歷初始化、載入檢視、銷毀檢視、生命結束等過程。

1)init方法

初始化viewcontroller本身。

2)loadview方法

當view需要被展示而它卻是nil時,viewcontroller會呼叫該方法。

如果**維護view的話需要重寫此方法,使用xib維護view的話不用重寫。

3)viewdidload方法

執行完loadview後繼續執行viewdidload,loadview時還沒有view,而viewdidload時view已經建立好了。

4)viewdidunload方法

當系統記憶體吃緊的時候會呼叫該方法,記憶體吃緊時,在iphone os 3.0之前didreceivememorywarning是釋放無用記憶體的唯一方式,但是os 3.0及以後viewdidunload方法是更好的方式。

在該方法中將所有iboutlet(無論是property還是例項變數)置為nil(系統release view時已經將其release掉了)。

在該方法中釋放其他與view有關的物件、其他在執行時建立(但非系統必須)的物件、在viewdidload中被建立的物件、快取資料等。

一般認為viewdidunload是viewdidload的映象,因為當view被重新請求時,viewdidload還會重新被執行。

5)dealloc

釋放其他資源或記憶體。

viewcontroller的生命週期圖

viewcontroller載入view過程,見下圖(loadview)

viewcontroller解除安裝view過程見(unloadview)

按結構可以對ios的所有viewcontroller分成兩類:

1、主要用於展示內容的viewcontroller,這種viewcontroller主要用於為使用者展示內容,並與使用者互動,如uitableviewcontroller,uiviewcontroller。

2、用於控制和顯示其他viewcontroller的viewcontroller。這種viewcontroller一般都是乙個viewcontroller的容器。如uin**igationcontroller,uitabbarcontroller。它們都有乙個屬性:viewcontrollers。其中uin**igationcontroller表示一種stack式結構,push乙個viewcontroller或pop一次,因此後乙個viewcontroller一般會依賴前乙個viewcontroller。而uitabbarcontroller表示乙個array結構,各個viewcontroller是並列的。

uiviewcontroller可以使用兩種方式建立,1、xib方式,2、**方式

1)xib方式

didfinishlaunchingwithoptions方法中載入xib檔案。

self.window = [[uiwindow alloc] initwithframe:[[uiscreen mainscreen] bounds]];

self.window.backgroundcolor = [uicolor whitecolor];

mainuiviewcontroller *vc=[[mainuiviewcontroller alloc]initwithnibname:@"mainuiviewcontroller" bundle:nil];

self.window.rootviewcontroller=vc;

[self.window makekeyandvisible];

return yes;

載入xib檔案後,在xib檔案拖拽幾個控制項可看到效果。

2)**建立

建立view

- (void)loadview
前面寫了ios應用程式的生命週期,這裡會寫到viewcontroller的生命週期,這個更像android的activity的生命週期(見文章最後的圖)。viewcontroller生命週期會經歷初始化、載入檢視、銷毀檢視、生命結束等過程。

1)init方法

初始化viewcontroller本身。

2)loadview方法

當view需要被展示而它卻是nil時,viewcontroller會呼叫該方法。

如果**維護view的話需要重寫此方法,使用xib維護view的話不用重寫。

3)viewdidload方法

執行完loadview後繼續執行viewdidload,loadview時還沒有view,而viewdidload時view已經建立好了。

4)viewdidunload方法

當系統記憶體吃緊的時候會呼叫該方法,記憶體吃緊時,在iphone os 3.0之前didreceivememorywarning是釋放無用記憶體的唯一方式,但是os 3.0及以後viewdidunload方法是更好的方式。

在該方法中將所有iboutlet(無論是property還是例項變數)置為nil(系統release view時已經將其release掉了)。

在該方法中釋放其他與view有關的物件、其他在執行時建立(但非系統必須)的物件、在viewdidload中被建立的物件、快取資料等。

一般認為viewdidunload是viewdidload的映象,因為當view被重新請求時,viewdidload還會重新被執行。

5)dealloc

釋放其他資源或記憶體。

viewcontroller的生命週期圖

viewcontroller載入view過程,見下圖(loadview)

viewcontroller解除安裝view過程見(unloadview)

iOS網路基礎 iOS網路基礎

ios網路基礎 ios網路基礎 建立請求 nsurlrequest 客戶端發起請求 nsurlconnection 接收伺服器端的響應 nsurlconnectiondatadelegate 從伺服器端的響應中獲取資料 複製 上面提到的這些屬性都是唯讀的。因此我們應使用nsmutableurlreq...

iOS 定位 基礎

原文 ios中的core location提供了定位功能,能定位裝置的當前座標,同時能得到裝置移動資訊。因為對定位裝置的輪詢是很耗電的,所以最好只在非常必要的前提下啟動。其中,最重要的類是cllocationmanager,定位管理。其定位有3種方式 1,gps,最精確的定位方式,貌似iphone1...

IOS 學習基礎。

在bank.h檔案中 import inte ce bank nsobject nsstring name int amount void print void addamount int a int amount bank initwithname nsstring n andamount int...