iOS程序的启动过程介绍
??? 大家在學習iPhone開發時候,都會寫HelloWorld程序。大家一般都是通過向導,生成項目,然后通過模擬器啟動應用程序。但是大家知道其背后的啟動過程嗎?也就是當點擊程序圖標啟動程序開始到退出程序整個使用運行過程中底下的代碼都發生了什么?有理解了這個才能游刃有余的掌握iPhone程序的開發,否則在寫程序的時候有點渾渾僵僵不知所以然的感覺。
??? 在開始介紹HelloWorld程序之前,我們先了解下UIApplication:
UIApplication
??? UIApplication的核心作用是提供了iOS程序運行期間的控制和協作工作。
??? UIApplication的一個主要工作是處理用戶事件,它會起一個隊列,把所有用戶事件都放入隊列,逐個處理,在處理的時候,它會發送當前事件到一個合適的處理事件的目標控件。此外,UIApplication實例還維護一個在本應用中打開的window列表(UIWindow實例),這樣它就可以接觸應用中的任何一個UIView對象。UIApplication實例會被賦予一個代理對象UIApplicationDelegate,以處理應用程序的生命周期事件(比如程序啟動和關閉)、系統事件(比如來電、記事項警告)等等。
??? 每一個程序在運行期必須有且僅有一個UIApplication(或則其子類)的一個實例。你可以通過調用[UIApplication sharedApplication]來得到這個單例實例的指針。
?
HelloWorld程序
??? 打開項目文件,找到Other Sources文件夾下的main.m源文件,打開,你將會看到如下代碼:
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
??? 和所有的C程序一樣,這是個程序入口main函數(NSAutoreleasePool內存自動回收池,不在這篇文章討論的范圍)。接下來我們來看UIApplicationMain函數,查看iPhone開發文檔:
int UIApplicationMain (
?? int argc,
?? char *argv[],
?? NSString *principalClassName,
?? NSString *delegateClassName
);
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
??? // Override point for customization after application launch.
????
??? self.window.rootViewController = self.viewController;
??? [self.window makeKeyAndVisible];
??? return YES;
}
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)loadView
{
??? // add control
}
??? 至此,HelloWord程序啟動過程以及介紹完成,大家對程序的啟動過程有沒有新的認識?
???
??? 總結程序啟動的過程如下:
1. 程序入口main函數創建UIApplication實例和UIApplication代理實例。
2. 在UIApplication代理實例中重寫啟動方法,設置第一ViewController。
3. 在第一ViewController中添加控件,實現應用程序界面。
?
by sschu
轉載于:https://www.cnblogs.com/ydhliphonedev/archive/2012/07/30/2615801.html
總結
以上是生活随笔為你收集整理的iOS程序的启动过程介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unity3D游戏开发初探—1.跨平台的
- 下一篇: C/C++数组名与指针区别深入探索