UIApplicationMain函數做了什么


在iOS應用中,每個程序得main函數中都調用了UIApplicationMain函數。

1
2
3
4
5
6
int main( int argc, char *argv[])
{
     @autoreleasepool {
         return UIApplicationMain (argc, argv, nil , NSStringFromClass ([AppDelegate class ]));
     }
}

先來看看UIApplicationMain函數的原型:

1
2
3
4
5
6
int UIApplicationMain (
     int argc,
     char *argv[],
     NSString *principalClassName,
     NSString *delegateClassName
);

前面的argc和argv是ISO C標准的main函數的參數,直接傳遞給UIApplicationMain進行相關處理。principalClassName是應用程序類的名字,該類必須繼承自UIApplication類。而delegateClassName是應用程序類的代理類。如果主要nib文件(在info.plist文件中指定,key是NSMainNibFile)存在,就會在nib文件對象里尋找Application對象和連接它的delegate。此函數會根據principalClassName創建UIApplication對象,然后根據delegateClassName創建一個delegate對象,並將UIApplication對象中的delegate屬性設置為delegate對象。接着會建立應用的main runloop,進行事件的處理(首先會調用– application:didFinishLaunchingWithOptions:)。程序正常退出時才返回(如今iOS支持后台運行,系統在必要時會強行殺死不用的進程,一般這個函數不等返回進程就終止了)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM