? ? ?所有基于C編寫的App的入口都是main函數(shù)矮湘,但iOS應(yīng)用程序有點(diǎn)不同答恶。不同就是你不需要為iOS應(yīng)用程序而自己編寫main函數(shù)小作,當(dāng)你使用Xcode創(chuàng)建工程的時(shí)候就已經(jīng)提供了具则。除非一些特殊情況砾淌,否則你不應(yīng)該修改Xcode提供的main函數(shù)實(shí)現(xiàn)啦撮。示例代碼如下:
#import
#import"AppDelegate.h"
intmain(intargc,char*argv[]) {
@autoreleasepool{
returnUIApplicationMain(argc,
argv,nil,NSStringFromClass([AppDelegateclass]));
}}
UIApplicationMain主要是創(chuàng)建App的幾個(gè)核心對(duì)象來(lái)處理以下過(guò)程:
1 從可用Storyboard文件加載用戶界面;
2 調(diào)用AppDelegate自定義代碼來(lái)做一些初始化設(shè)置汪厨;
3 將App放入Main Run Loop環(huán)境中來(lái)響應(yīng)和處理與用戶交互產(chǎn)生的事件赃春。
程序狀態(tài)變化圖:
AppDelegate.m中的方法:
1.application didFinishLaunchingWithOptions:當(dāng)應(yīng)用程序啟動(dòng)時(shí)執(zhí)行,應(yīng)用程序啟動(dòng)入口劫乱,只在應(yīng)用程序啟動(dòng)時(shí)執(zhí)行一次织中。若用戶直接啟動(dòng),lauchOptions內(nèi)無(wú)數(shù)據(jù),若通過(guò)其他方式啟動(dòng)應(yīng)用衷戈,lauchOptions包含對(duì)應(yīng)方式的內(nèi)容狭吼。
2.applicationWillResignActive:在應(yīng)用程序?qū)⒁苫顒?dòng)狀態(tài)切換到非活動(dòng)狀態(tài)時(shí)候,要執(zhí)行的委托調(diào)用殖妇,如按下home按鈕刁笙,返回主屏幕,或全屏之間切換應(yīng)用程序等谦趣。
3.applicationDidEnterBackground:在應(yīng)用程序已進(jìn)入后臺(tái)程序時(shí)疲吸,要執(zhí)行的委托調(diào)用。
4.applicationWillEnterForeground:在應(yīng)用程序?qū)⒁M(jìn)入前臺(tái)時(shí)(被激活)前鹅,要執(zhí)行的委托調(diào)用摘悴,剛好與applicationWillResignActive方法相對(duì)應(yīng)。
5.applicationDidBecomeActive:在應(yīng)用程序已被激活后舰绘,要執(zhí)行的委托調(diào)用烦租,剛好與applicationDidEnterBackground方法相對(duì)應(yīng)。
6.applicationWillTerminate:在應(yīng)用程序要完全退出的時(shí)候除盏,要執(zhí)行的委托調(diào)用,這個(gè)需要要設(shè)置UIApplicationExitsOnSuspend的鍵值挫以。
加載應(yīng)用進(jìn)入前臺(tái):
加載應(yīng)用進(jìn)入后臺(tái):
注意:
設(shè)備鎖屏:
當(dāng)手機(jī)鎖屏?xí)r者蠕,由狀態(tài)active切換到inactive,此時(shí)調(diào)用applicationWillResignActive:掐松;然后再由inactive狀態(tài)切換到running狀態(tài)踱侣,此時(shí)調(diào)用applicationDidEnterBackground:方法粪小。
應(yīng)用程序的終止:
系統(tǒng)常常是為其他app啟動(dòng)時(shí)由于內(nèi)存不足而回收內(nèi)存最后需要終止應(yīng)用程序,但有時(shí)也會(huì)是由于app很長(zhǎng)時(shí)間才響應(yīng)而終止抡句。如果app當(dāng)時(shí)運(yùn)行在后臺(tái)并且沒有暫停探膊,系統(tǒng)會(huì)在應(yīng)用程序終止之前調(diào)用applicationWillTerminate:來(lái)保存用戶的一些重要數(shù)據(jù)以便下次啟動(dòng)時(shí)恢復(fù)到app原來(lái)的狀態(tài)。