iOS5編程 -- main函數研究

來源:互聯網
上載者:User

Xcode4.2之前的main函數如下:

int main(int argc,
char *argv[])

{

   
NSAutoreleasePool *pool = [[NSAutoreleasePool
alloc] init];

   
int retVal = UIApplicationMain(argc, argv,
nil, nil);

    [pool
release];

   
return retVal;

}

Xcode4.2工程中的主函數為

int main(int argc,
char *argv[])

{

    @autoreleasepool {

       
return UIApplicationMain(argc, argv, nil, NSStringFromClass([TCAppDelegate class]));

    }

}

可以看出一個重要的變化是在4.2使用了ARC技術後,NSAutoreleasePool被廢棄,改用@autoreleasepool,這裡請不要該回原先的方式,如果改變後,在開啟ARC選項後,程式將不能通過編譯。

不論那個版本,UIApplicationMain函數都是程式的關鍵點,下面是對這個函數的分析:

UIApplicationMain()函數是初始化程式的核心,它接受4個參數。其中argc和argv兩個參數來自於main()接受的兩個參數;另外兩個String型參數分別表示程式的主要類(principal
class)和代理類(delegate class)。如果主要類(principal class)為nil,則預設為UIApplication;如果代理類(delegate class)為nil,則程式假設程式的代理來自Main nib檔案。如果這兩個參數任意一個不為nil,則UIApplicationMain()函數則會根據參數建立相應的功能類。因此,如果程式中使用自訂的UIApplication類的子類(不建議繼承UIApplication類建立自訂的子類),你需要將你的自訂類名作為第3個參數傳進來。

根據上面的分析,我們來看以下iOS程式的聲明周期


對於UIApplicationMain函數中的第四個參數,我們也可以看出新舊版本的不同,我們建議在原先的工程中使用新的版本,以提高程式的速度,共修改如下幾處

假如你的工程類都是以TC開頭。

1.import你的appdelegate類,並修改第四個參數如下:

UIApplicationMain(argc, argv, nil,
NSStringFromClass([TCAppDelegate class]));

2.刪除MainWindow.xib檔案

3.在工程的Info.plist檔案中刪除下面一行


4.在TCAppDelegate.m檔案中,修改

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary
*)launchOptions函數,如下:

   
self.window = [[UIWindow
alloc] initWithFrame:[[UIScreen
mainScreen] bounds]];

   
// Override point for customization after application launch.

   
self.viewController = [[TCViewController
alloc] initWithNibName:@"TCViewController"
bundle:nil];


   
self.window.rootViewController =
self.viewController;

    [self.window
makeKeyAndVisible];

   
return YES;

其中加粗部分為新增部分。

經過上面的修改,我們就可以在程式load的過程中,省去載入MainWindow.xib檔案,提高程式的速度。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.