話說郁副,我們談戀愛很長時間了,但最近你說:“你不是真的愛我豌习,你根本就不理解我存谎,我是誰,來自哪里肥隆,你知道么既荚?”,面對你的質(zhì)問栋艳,我竟然無言以對恰聘,或許我真的要重新認識你,而不僅僅是利用你吸占,我錯了晴叨,親愛的,請給我一次機會矾屯,我想重新追求你兼蕊,好么。
首先件蚕,你主要的工程結(jié)構(gòu)包含有:
main.m 程序的入口
xxx-Prefix.pch 預(yù)編譯頭文件
xxx-Info.plist 程序配置文件
InfoPlist.string 國際化文件
xxx.app 最終程序
framework 各種框架
2 程序執(zhí)行的順序:
?main.m是程序的入口孙技;UIApplicationMain()創(chuàng)建應(yīng)用程序?qū)ο螅⑶覟榇藢ο笾付ㄎ信抛鳎瑱z測程序的執(zhí)行牵啦,同時開啟事件循環(huán),處理程序接收到的事件纽绍;UIApplicationDelegate 方法的執(zhí)行蕾久;加載window ;指定根視圖控制器。
3 認識一下 UIApplication?
其就是應(yīng)用程序本身拌夏,系統(tǒng)將其做成了實例來使用僧著,每一個程序都是UIApplication或子類的實例,主要用于處理用戶的事件障簿,以及負責window 的顯示盹愚,通常會給應(yīng)用程序指定一個委托來檢測程序的運行。
4 main函數(shù)
main函數(shù)因為在程序中被用到幾乎沒有站故,所以幾乎把其忽略掉了皆怕,今天我們重新認識一下。我們都知道應(yīng)用程序運行所需要的 大多數(shù)工作實際由其代理方法來執(zhí)行西篓,所以main函數(shù)會有一個標準的模板愈腾,
在main.m文件中代碼如下:
#import#import "AppDelegate.h"
int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
其主要作用,創(chuàng)建一個自動釋池岂津,調(diào)用UIApplicatinMain函數(shù)虱黄,以及使用自動釋放池。
這里介紹一下UIApplicationMain函數(shù)的四個參數(shù):前兩個是需要傳給main函數(shù)連個參數(shù)吮成,具體干什么不太清楚橱乱,剩下的兩個字符串參數(shù),第三個是用于標識應(yīng)用程序的首要類粱甫,即應(yīng)用程序所屬的類泳叠,如果第三個參數(shù)為nil,則UIKit就缺省使用UIApplicatin類茶宵。第四個參數(shù)是應(yīng)用程序委托類危纫,如果其為nil,則UIKit就會將應(yīng)用程序的主nib文件中的摸個對象假定為應(yīng)用程序的委托對象乌庶。如果第三個參數(shù)為非nil時叶摄,則啟動程序時,UIApplicationMain函數(shù)會創(chuàng)建一個與傳入值相應(yīng)的類實例安拟,所以一般情況下 第三個參數(shù)為 nil.
5 UIApplicationDelegate?
其主要監(jiān)聽應(yīng)用程序的一系列的行為蛤吓,比如程序啟動 活躍/非活躍狀態(tài) 前后臺切換 推送通知 內(nèi)存警告,以及CoreData的初始化配置糠赦。
6 UIWinow
其有一個重要的屬性是 rootViewController会傲,用于裝載窗口里面的第一個視圖
其有一個重要的方法:makeKeyAndVisible ,將當前的window設(shè)為主window ,并且將其內(nèi)容顯示出來拙泽。