IOS視圖控制器的生命周期實(shí)例詳解
IOS視圖控制器
所謂的生命周期,也就是幾個(gè)函數(shù)的調(diào)用順序,這里以用Storyboard來(lái)創(chuàng)建一個(gè)ViewController為例
然后我們測(cè)試如下代碼
//
// ViewController.m
//
// Created by huangwenchen on 14/12/26.
// Copyright (c) 2014年 huangwenchen. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (id)initWithCoder:(NSCoder *)aDecoder{
if (self = [super initWithCoder:aDecoder]) {
NSLog(@"initWithCoder Called");
}
return self;
}
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"viewDidLoad Called");
// Do any additional setup after loading the view, typically from a nib.
}
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
NSLog(@"viewWillAppear Called");
}
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
NSLog(@"viewDidAppear Called");
}
-(void)awakeFromNib{
NSLog(@"awakeFromNib Called");
}
-(void)viewWillLayoutSubviews{
NSLog(@"viewWillLayoutSubviews Called");
}
-(void)viewDidLayoutSubviews{
NSLog(@"viewDidLayoutSubviews Called");
}
@end
然后,在模擬器上運(yùn)行,輸出為
2014-12-29 19:42:47.904 KVCForCSDN[2370:126741] initWithCoder Called 2014-12-29 19:42:47.907 KVCForCSDN[2370:126741] awakeFromNib Called 2014-12-29 19:42:47.927 KVCForCSDN[2370:126741] viewDidLoad Called 2014-12-29 19:42:47.927 KVCForCSDN[2370:126741] viewWillAppear Called 2014-12-29 19:42:47.961 KVCForCSDN[2370:126741] viewWillLayoutSubviews Called 2014-12-29 19:42:47.963 KVCForCSDN[2370:126741] viewDidLayoutSubviews Called 2014-12-29 19:42:47.970 KVCForCSDN[2370:126741] viewDidAppear Called
所以,調(diào)用順序?yàn)?br />
1 init函數(shù)(init;initWithFrame;initWithCoder;等)--初始化
2 awakeFromNib--在loadView之前的工作放在這里
3 viewDidLoad--注意,一個(gè)ViewController一個(gè)生命周期內(nèi)這個(gè)函數(shù)只會(huì)調(diào)用一次
4 viewWillAppear -- view將要出現(xiàn),每次View消失再出現(xiàn)都會(huì)調(diào)用
5 viewWillLayoutSubviews--簡(jiǎn)要對(duì)子試圖進(jìn)行布局
6 viewDidLayoutSubivews--完成對(duì)子試圖布局
7 viewDidAppear--視圖將要出現(xiàn)在屏幕上
---上述代碼不含部分
8 viewWillDisappear--View將要消失
9 viewDidDisappear--View已經(jīng)消失
這九個(gè)就是通常的視圖控制器生命周期內(nèi)函數(shù)調(diào)用順序,一定要清楚什么樣的代碼應(yīng)該放在視圖控制器生命周期的什么位置
BTY:
didReceiveMemoryWarning
這個(gè)函數(shù)通常也在生命周期的考慮范圍內(nèi),當(dāng)內(nèi)存不足時(shí)候會(huì)調(diào)用,這時(shí)候應(yīng)當(dāng)進(jìn)行適當(dāng)?shù)膬?nèi)存釋放,不然iOS會(huì)強(qiáng)制關(guān)閉當(dāng)前的APP
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
IOS實(shí)現(xiàn)簽到特效(散花效果)的實(shí)例代碼
這篇文章主要介紹了IOS實(shí)現(xiàn)簽到特效(散花效果)的實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
iOS內(nèi)存錯(cuò)誤EXC_BAD_ACCESS的解決方法
iOS開(kāi)發(fā),最郁悶的莫過(guò)于程序毫無(wú)征兆地就崩潰了,用bt命令打出調(diào)用棧,給出的是一堆系統(tǒng)EXC_BAD_ACCESS的信息,根本沒(méi)辦法定位問(wèn)題出現(xiàn)在哪里2013-06-06
Objective-C的入門(mén)學(xué)習(xí)筆記
Objective-C過(guò)去一直以來(lái)都是iOS應(yīng)用程序開(kāi)發(fā)的主要支持語(yǔ)言,雖然現(xiàn)在有了Swift,但需要調(diào)用的很多現(xiàn)有類庫(kù)還是Objective-C寫(xiě)成的,值得學(xué)習(xí),下面一起來(lái)看一下這份粗淺的Objective-C的入門(mén)學(xué)習(xí)筆記:2016-05-05
使用Reachability類判斷iOS設(shè)備的當(dāng)前網(wǎng)絡(luò)連接類型
這篇文章主要介紹了使用Reachability類判斷iOS設(shè)備的當(dāng)前網(wǎng)絡(luò)連接類型,這里開(kāi)發(fā)語(yǔ)言為傳統(tǒng)的Objectice-C,需要的朋友可以參考下2016-02-02
iOS 對(duì)plist文件進(jìn)行讀寫(xiě),增刪改查的實(shí)例
下面小編就為大家?guī)?lái)一篇iOS 對(duì)plist文件進(jìn)行讀寫(xiě),增刪改查的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-02-02
深入理解Objective-C中類的數(shù)據(jù)結(jié)構(gòu)
最近發(fā)現(xiàn)用Objective-C確實(shí)好容易,下面這篇文章主要給大家介紹了關(guān)于Objective-C中類的數(shù)據(jù)結(jié)構(gòu)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05

