? ? 如上圖所示,ios有五種不同的生命周期狀態(tài),不同的狀態(tài)間有著不同的關系。
這五種狀態(tài)分別是:
1.Not Running(非運行狀態(tài)。 ?指應用沒有運行或被系統(tǒng)終止)
2.Inactive (前臺非活動狀態(tài)。 ?指應用正在進入前臺狀態(tài),但是還不能接受事件處理)
3.Active(前臺活動狀態(tài)。 ?指應用進入前臺狀態(tài),能接受事件處理)
4.Background(后臺狀態(tài)。 ?指應用進入后臺后,依然能夠執(zhí)行代碼。如果有可執(zhí)行的代碼就會執(zhí)行代碼,如果沒有可執(zhí)行的代碼或者將可執(zhí)行的代碼執(zhí)行完畢,應用會馬上 進入掛起狀態(tài))
5.Suspended(掛起狀態(tài)。 ?指應處于掛起的應用進入一種“冷凍”的狀態(tài),不能執(zhí)行代碼。如果系統(tǒng)內存不夠,應用會被終止)
這五種狀態(tài)在應用的使用過程中,會依據(jù)實際的使用場景,出現(xiàn)對應的生命周期狀態(tài)躍遷的變化,在應用生命周期狀態(tài)躍遷的過程 中,iOS系統(tǒng)會回調應用程序的委托對象,APPDelegate類中的不同方法,同時會發(fā)出相應的通知。詳情參考下圖:
ViewController生命周期
alloc -> initWithNibName -> loadView -> viewDidLoad -> viewWillAppear -> viewDidAppear -> viewWillDisappear -> viewDidDisappear -> dealloc
注意viewWillUnload和viewDidUnload已經在ios6被廢棄了,因為Clearing references to views is no longer necessary。
注意1.沒有viewWillLoad。
注意2.viewDidLoad和viewDidUnload并不是成對的。
具體流程可參考下圖:
更加詳細介紹,可參考生命周期 - 簡書