国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

iOS程序啟動過程

2019-11-14 18:27:06
字體:
來源:轉載
供稿:網友

  main函數之前的底層環境搭建(代碼拷貝、內存的開辟等操作系統相關的開啟一個進程)不再描述,我們從main函數開始。

1 main函數

int main(int argc, char * argv[]) {    NSLog(@"===%s",argv[0]);    @autoreleasepool {        /// 函數原型:        //  int UIapplicationMain(int argc, char *argv[], NSString *PRincipalClassName, NSString *delegateClassName);        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));    }}

  這里面的代碼一般是不變的。首先是一個自動釋放池,保證結束時內存釋放,下面是參數介紹:

  argc, argv:是標C的參數,argc為argv數組中元素的個數。argv一般有一個元素argv[0]即當前可執行程序的路徑。(另外,在linux系統下我們通過終端打開一個程序可以給它傳遞參數,具體不再展開。如果不知所云括號里面的自動忽略);

  principalClassName指定應用程序類,該類必須是UIApplication(或子類)。如果為nil,則用UIApplication類作為默認值,它是一個單例,代表一個進程,也是程序創建的第一個對象,利用UIApplication對象,能進行一些應用級別的操作;

  delegateClassName:指定應用程序類的代理類,該類必須遵守UIApplicationDelegate協議。

2 UIApplicationMain

   1)根據傳進的參數創建UIApplication對象;

   2)根據傳進的參數創建UIApplication的delegate對象,并將該delegate對象賦值給UIApplication對象中的delegate屬性。

   3)開啟一個消息循環

  下面分為storyboard啟動和沒有storyboard啟動

##有storyboard##

3 根據Info.plist加載storyboard

   1)創建UIWindow,UIWindow是一種特殊的UIView,通常在一個App中只會有一個UIWindow(注意是通常,還有其它的,比如彈出的鍵盤)。設置為主窗口,同一時刻主窗口只有一個,可以通過[UIApplication sharedApplication].keyWindow獲取。

   2)創建和設置UIWindow的rootViewController。

   3)顯示窗口

 


 

##沒有storyboard##

3 delegate對象開始處理(監聽)系統事件(沒有storyboard)

   1)程序啟動完畢的時候, 就會調用代理的application:didFinishLaunchingWithOptions:方法

       2)在application:didFinishLaunchingWithOptions:中創建UIWindow:window

       3)創建和設置UIWindow的rootViewController

       4)顯示并設置window為主窗口:[window makeKeyAndVisible]; 然后self.window = window;防止被釋放。

 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 定日县| 惠安县| 蕲春县| 呼玛县| 莱芜市| 太康县| 江达县| 余姚市| 钟山县| 洮南市| 淮安市| 枞阳县| 普宁市| 双牌县| 延津县| 宜兴市| 平凉市| 襄樊市| 曲阜市| 裕民县| 凤庆县| 永修县| 阿尔山市| 谢通门县| 唐海县| 平昌县| 临朐县| 津市市| 乐至县| 崇州市| 清远市| 安义县| 闸北区| 将乐县| 惠安县| 朝阳市| 临西县| 曲阳县| 调兵山市| 萝北县| 从化市|