成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iOS開發中被忽略的main函數

移動開發 iOS
如同任何基于C的應用程序,程序啟動的主入口點為iOS應用程序的main函數。在iOS應用程序,main函數的作用是很少的。它的主要工作是控制UIKit framework。

[[115848]]

本文轉自幻想鄉的技術宅

如同任何基于C的應用程序,程序啟動的主入口點為iOS應用程序的main函數。在iOS應用程序,main函數的作用是很少的。它的主要工作 是控制UIKit framework。因此,你在Xcode中創建任何新的項目都配備了一個默認的主函數。除了少數特例外,你永遠不應該改變這個函數的實現。

  1. #import <UIKit/UIKit.h>  
  2.   
  3. #import "AppDelegate.h"  
  4.   
  5. int main(int argc, char * argv[])  
  6. {  
  7.    @autoreleasepool {  
  8.        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));  
  9.     }  
  10. }  

UIApplicationMain函數有四個參數,并使用這些參數來初始化應用程序。你不應該改變傳遞給這個函數的默認值。盡管如此,了解他們的目的,以及他們是如何啟動的應用程序,它也是有價值的。

  1. UIKIT_EXTERN int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);  

參數解釋:

argc和argv:是ISO C標準的main函數的參數,直接傳遞給UIApplicationMain進行相關處理。參數包含應用程序何時從系統啟動等信息。這些參數是由UIKit的基礎設施解析,否則可以忽略不計。 

principalClassName:這個參數標識了應用程序的類的名稱(該類必須繼承自UIApplication類)。這是負責運行應用程序的類。建議為這個參數傳nil。

delegateClassName:是應用程序類的代理類。應用程序的代理負責管理系統和你的代碼之間的高層次的互動。 Xcode的項目模板會自動將該參數設置為一個適當的值。

UIApplicationMain函數做的另一件事是加載應用程序的主用戶界面文件。主界面文件包含應用程序的用戶界面中顯示的初始視圖相關 的對象。對于使用storyboard的應用程序,這個函數會從你的storyboard的初始視圖控制器和您的應用程序代理提供的窗口運行。對于使用 nib文件的應用程序,該方法將nib文件內容加載內存中,但不會在你的應用程序的窗口進行運行;您必須在應用程序委托的方法中運行如下方法。

  1. - (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions NS_AVAILABLE_IOS(6_0);  

一個應用程序可以有一個主storyboard文件或者一個主nib文件,但它不能兼得。storyboards是首選的方式來指定你的應用程 序的用戶界面,但不支持在所有版本的iOS。應用程序主storyboard的文件名應該在應用程序的Info.plist文件中的 UIMainStoryboardFile鍵值中設定。(對于以nib文件為基礎的應用程序,你的主nib文件的名稱需要在NSMainNibFile鍵 值中設定。)通常情況下,Xcode會在你創建項目時創建相應鍵的值,但可以根據需要進行更改。 

如果主要nib文件存在,就會在nib文件對象里尋找Application對象和連接它的delegate。此函數會根據 principalClassName創建UIApplication對象,然后根據delegateClassName創建一個delegate對象, 并將UIApplication對象中的delegate屬性設置為delegate對象。 

在程序啟動時:

當您的應用程序啟動(無論是進入前臺還是后臺),需要使用如下方法并進行相應操作:

  1. - (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions NS_AVAILABLE_IOS(6_0);  
  2. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions NS_AVAILABLE_IOS(3_0);  

①檢查啟動選項字典中的內容,查看程序啟動的方式,并做出適當的反應。 

②初始化應用程序的關鍵數據結構。 

③準備好你的應用程序的窗口和視圖進行顯示。 

使用OpenGL ES的應用程序不應該使用這個方法來準備他們的繪圖環境。相反,他們應該推遲到- (void)applicationDidBecomeActive:(UIApplication *)application方法調用時啟動OpenGL ES繪圖方法。

如果您的應用程序不會自動在啟動時加載一個主要storyboard或nib文件,您可以使用- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions編寫你的應用程序的窗口顯示。對于同時支持縱向和橫向的應用程序,始終設置主窗口的根視圖控制器在縱向方向。如果該設備是 在一個不同的方向在啟動時,系統會告訴根視圖控制器顯示窗口的旋轉信息,以保持正確的方向。

您的應用程序- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions;- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;方法應該總是??盡可能為輕量,以減少你的應用程序的啟動時間。應用預期將啟動并初始化自身,并開始處理不到5秒的事 件。如果一個應用程序沒有及時完成它的啟動周期,系統會殺死它。因此,有可能你的啟動慢下來(如接入網絡)的任何任務,應在異步輔助線程執行。

當程序啟動到前臺,該系統還會調用- (void)applicationDidBecomeActive:(UIApplication *)application;方法來完成過渡到前臺。因為這種方法既在啟動時與從后臺過渡到前臺時被調用,使用它來執行所共有的兩個轉變的任何任務。

當程序在后臺運行時,除了準備好對任何事件到達的處理,不應該有太多的任務讓應用程序做。

責任編輯:閆佳明 來源: cocoachina
相關推薦

2009-07-02 09:43:00

綜合布線跳線

2019-06-06 15:49:53

多線程iOS開發操作

2011-07-11 14:53:01

java主函數

2025-05-09 00:22:00

2010-01-27 13:31:10

C++ main()函

2010-01-19 14:28:41

C++ main()函

2019-06-10 19:00:23

Cmain函數編程語言

2020-07-22 07:55:12

Python開發函數

2023-11-27 16:26:20

mainC語言

2009-05-31 09:07:35

Oracle鎖定

2020-06-03 09:08:21

JavaScript開發代碼

2009-09-04 18:09:12

C# Main函數

2024-03-06 08:15:03

@Autowired注入方式Spring

2010-05-17 09:50:24

PHP

2014-06-03 09:53:21

WWDC2014iOS 8亮點

2011-03-30 08:49:34

WebjQuery

2025-03-31 08:00:00

JavaScriptAPI開發

2025-02-06 16:48:01

2015-03-18 09:29:12

iOS開發爭議

2013-06-04 15:41:31

iOS開發移動開發block
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久亚洲国产精品 | 婷婷色国产偷v国产偷v小说 | 九九久久精品视频 | 色久在线 | 午夜精品久久 | 午夜视频一区二区三区 | 午夜电影在线播放 | 欧美久久精品一级黑人c片 91免费在线视频 | 国产综合久久 | 久久精品色欧美aⅴ一区二区 | 成人高清在线视频 | 一区二区三区国产好的精 | 在线看一区二区三区 | 欧美久久一区 | 天天干干 | 日韩在线中文字幕 | 第一色在线 | 国产精品久久久久永久免费观看 | 操操操av| 国产一区二区三区色淫影院 | 欧美日韩一二三区 | av黄色在线 | av一级久久| 日韩成人在线观看 | 中文字幕亚洲一区二区三区 | 爱高潮www亚洲精品 中文字幕免费视频 | 久久精品国产清自在天天线 | av网站免费观看 | 国产视频二区在线观看 | 日韩成人av在线 | 国产在线播 | 成人在线视频看看 | 久久精品国产一区二区电影 | 日韩视频―中文字幕 | 欧美激情综合 | 国产在视频一区二区三区吞精 | 欧美一区二区三区电影 | 日韩精品一区二区三区高清免费 | 欧美精品在线播放 | 天天操夜夜艹 | 日日干夜夜操 |