閱讀459 返回首頁    go 技術社區[雲棲]


iOS開發那些事--iOS視圖生命周期與視圖控製器關係

iOS中視圖是一個應用的重要組成部分,功能的實現與其息息相關,而視圖控製器控製著視圖,其重要性在整個應用中不言而喻。

視圖生命周期與視圖控製器關係

以視圖的5種狀態為基礎,我們來係統的了解一下視圖控製器的生命周期。在視圖不同的生命周期,視圖控製器會回調不同的方法。

1

viewDidLoad方法:視圖控製器已被實例化,在視圖被加載到內存中的時候調用該方法,這個時候視圖並未出現。在該方法中通常進行的是對所控製的視圖進行初始化處理。

視圖可見前後會調用viewWillAppear:方法和viewDidAppear:方法;視圖不可見前後會調用viewWillDisappear:方法和viewDidDisappear:方法。 4個方法調用父類相應的方法以實現其功能, 編碼時該方法的位置可根據實際情況做以調整,參見如下代碼:

-(void)viewWillAppear:(BOOL)animated

{

[super viewWillAppear:YES];

… …

}


viewDidLoad方法在應用運行的時候隻調用一次,而這上述4個方法可以被反複調用多次,它們的使用很廣泛但同時也具有很強的技巧性。例如:有的應用會使用重力加速計,重力加速計會不斷輪詢設備以實時獲得設備在z軸、x軸和y軸方向的重力加速度。不斷的輪詢必然會耗費大量電能進而影響電池使用壽命,我們通過利用這4個方法適時地打開或者關閉重力加速計來達到節約電能的目的。怎麼使用這4個方法才能做到“適時”是一個值得思考的問題。

iOS係統在低內存時情況下會調用didReceiveMemoryWarning:和viewDidUnload:方法。iOS6之後就不再使用viewDidUnload:,而僅支持didReceiveMemoryWarning:。didReceiveMemoryWarning:方法的主要職能是釋放內存,包括視圖控製器中的一些成員變量和視圖的釋放。現舉例如下:

- (void)didReceiveMemoryWarning {

self.button = nil;
self.myStringD = nil;
[myStringC release];

[super didReceiveMemoryWarning];
}


最後更新:2017-04-04 07:03:42

  上一篇:go Android-- EditText與InputFilter實現文本對比
  下一篇:go zoj 1203 Swordfish MST