創(chuàng)建一個視圖控制器
當(dāng)一個視圖控制器被創(chuàng)建,并在屏幕上顯示的時候。 代碼的執(zhí)行順序
alloc:創(chuàng)建對象,分配空間
init (initWithNibName) :初始化對象糟趾,初始化數(shù)據(jù)
loadView:從nib載入視圖 ,通常這一步不需要去干涉甚牲。除非你沒有使用xib文件創(chuàng)建視圖
{
//如果我們使用自定義的視圖,那么就不要調(diào)用[super loadView]
//自定義一個視圖
UIView *customView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
//將自定義視圖賦給當(dāng)前控制器自帶的view
self.view = customView;
NSLog(@"***%s",__func__);
}```
viewDidLoad:載入完成蝶柿,可以進(jìn)行自定義數(shù)據(jù)以及動態(tài)創(chuàng)建其他控件
```- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"***%s",__func__);
}```
viewWillAppear:視圖將出現(xiàn)在屏幕之前丈钙,馬上這個視圖就會被展現(xiàn)在屏幕上了
```- (void)viewWillAppear:(BOOL)animated{
[super viewDidAppear:animated];
NSLog(@"***%s",__func__);
}```
viewDidAppear:視圖已在屏幕上渲染完成
```- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
NSLog(@"***%s",__func__);
}```
#視圖被移除
當(dāng)一個視圖被移除屏幕并且銷毀的時候的執(zhí)行順序,這個順序差不多和上面的相反
viewWillDisappear:視圖將被從屏幕上移除之前執(zhí)行
```- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
NSLog(@"***%s",__func__);
}```
viewDidDisappear: 視圖已經(jīng)被從屏幕上移除交汤,用戶看不到這個視圖了
```- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
NSLog(@"***%s",__func__);
}```
dealloc: 視圖被銷毀雏赦,此處需要對你在init和viewDidLoad中創(chuàng)建的對象進(jìn)行釋放,此方法一般在MRC下重寫芙扎。ARC下可以重寫dealloc方法星岗,但是內(nèi)部不能釋放內(nèi)存,否則會過度釋放戒洼。
```- (void)dealloc
{
}```
關(guān)于viewDidUnload :在發(fā)生內(nèi)存警告的時候如果本視圖不是當(dāng)前屏幕上正在顯示的視圖的話俏橘, viewDidUnload將會被執(zhí)行,本視圖的所有子視圖將被銷毀圈浇,以釋放內(nèi)存,此時開發(fā)者需要手動對viewLoad寥掐、viewDidLoad中創(chuàng)建的對象釋放內(nèi)存。 因?yàn)楫?dāng)這個視圖再次顯示在屏幕上的時候磷蜀,viewLoad召耘、viewDidLoad 再次被調(diào)用,以便再次構(gòu)造視圖褐隆。