話說,我們談戀愛很長時間了,但最近你說:“你不是真的愛我,你根本就不理解我,我是誰,來自哪里,你知道么?”,面對你的質問,我竟然無言以對,或許我真的要重新認識你,而不僅僅是利用你,我錯了,親愛的,請給我一次機會,我想重新追求你,好么。
首先,你主要的工程結構包含有:
main.m 程序的入口
xxx-Prefix.pch 預編譯頭文件
xxx-Info.plist 程序配置文件
InfoPlist.string 國際化文件
xxx.app 最終程序
framework 各種框架
2 程序執行的順序:
?main.m是程序的入口;UIApplicationMain()創建應用程序對象,并且為此對象指定委托,檢測程序的執行,同時開啟事件循環,處理程序接收到的事件;UIApplicationDelegate 方法的執行;加載window ;指定根視圖控制器。
3 認識一下 UIApplication?
其就是應用程序本身,系統將其做成了實例來使用,每一個程序都是UIApplication或子類的實例,主要用于處理用戶的事件,以及負責window 的顯示,通常會給應用程序指定一個委托來檢測程序的運行。
4 main函數
main函數因為在程序中被用到幾乎沒有,所以幾乎把其忽略掉了,今天我們重新認識一下。我們都知道應用程序運行所需要的 大多數工作實際由其代理方法來執行,所以main函數會有一個標準的模板,
在main.m文件中代碼如下:
#import#import "AppDelegate.h"
int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
其主要作用,創建一個自動釋池,調用UIApplicatinMain函數,以及使用自動釋放池。
這里介紹一下UIApplicationMain函數的四個參數:前兩個是需要傳給main函數連個參數,具體干什么不太清楚,剩下的兩個字符串參數,第三個是用于標識應用程序的首要類,即應用程序所屬的類,如果第三個參數為nil,則UIKit就缺省使用UIApplicatin類。第四個參數是應用程序委托類,如果其為nil,則UIKit就會將應用程序的主nib文件中的摸個對象假定為應用程序的委托對象。如果第三個參數為非nil時,則啟動程序時,UIApplicationMain函數會創建一個與傳入值相應的類實例,所以一般情況下 第三個參數為 nil.
5 UIApplicationDelegate?
其主要監聽應用程序的一系列的行為,比如程序啟動 活躍/非活躍狀態 前后臺切換 推送通知 內存警告,以及CoreData的初始化配置。
6 UIWinow
其有一個重要的屬性是 rootViewController,用于裝載窗口里面的第一個視圖
其有一個重要的方法:makeKeyAndVisible ,將當前的window設為主window ,并且將其內容顯示出來。