ViewController生命周期
按照?qǐng)?zhí)行順序排列:
- initWithCoder:通過(guò)nib文件初始化時(shí)觸發(fā)。
- awakeFromNib:nib文件被加載的時(shí)候,會(huì)發(fā)生一個(gè)awakeFromNib的消息到nib文件中的每個(gè)對(duì)象。
- loadView:開(kāi)始加載視圖控制器自帶的view。
- viewDidLoad:視圖控制器的view被加載完成。
- viewWillAppear:視圖控制器的view將要顯示在window上。
- updateViewConstraints:視圖控制器的view開(kāi)始更新AutoLayout約束。
- viewWillLayoutSubviews:視圖控制器的view將要更新內(nèi)容視圖的位置。
- viewDidLayoutSubviews:視圖控制器的view已經(jīng)更新視圖的位置。
- viewDidAppear:視圖控制器的view已經(jīng)展示到window上。
- viewWillDisappear:視圖控制器的view將要從window上消失。
- viewDidDisappear:視圖控制器的view已經(jīng)從window上消失。
當(dāng)View本身的frame改變時(shí),會(huì)調(diào)用LayoutSubViews方法。
注意在使用自定義視圖的時(shí)候
- (void)layoutSubviews
{
[super layoutSubviews];
//一般控件frame都在這里進(jìn)行設(shè)置,防止被到處更改,不好delete bug.
}
小記 iOS應(yīng)用程序從開(kāi)始到結(jié)束的各種運(yùn)行狀態(tài):
Not Running (非運(yùn)行狀態(tài))。應(yīng)用沒(méi)有運(yùn)行或被系統(tǒng)終止。
Inactive(前臺(tái)非活動(dòng)狀態(tài))。應(yīng)用正在進(jìn)入前臺(tái)狀態(tài),但不能接受事件處理。
Active(前臺(tái)活動(dòng)狀態(tài))。應(yīng)用進(jìn)入前臺(tái)狀態(tài),能接受事件處理。
Background(后臺(tái)狀態(tài))。應(yīng)用進(jìn)入后臺(tái)后,依然能夠執(zhí)行代碼。如果有可執(zhí)行的代碼,就會(huì)執(zhí)行代碼,如果沒(méi)有可執(zhí)行的代碼或者可執(zhí)行的代碼執(zhí)行完畢,應(yīng)用會(huì)馬上進(jìn)入掛起狀態(tài)。
Suspended(掛起狀態(tài))。處于掛起的應(yīng)用進(jìn)入一種“冷凍”狀態(tài),不能執(zhí)行代碼。如果系統(tǒng)內(nèi)存不夠,應(yīng)用會(huì)被終止。