1. 程式人生 > 實用技巧 >IOS應用的啟動流程

IOS應用的啟動流程

1.先執行main函式,main內部會呼叫UIApplicationMain函式

2.UIApplicationMain函式裡面做了什麼事情:

  1>建立UIApplication物件

  2>建立UIApplication的delegate物件—–PYAppDelegate

  3>開啟一個訊息迴圈

  每監聽到對應的系統事件時,就會通知MJAppDelegate

  4>為應用程式建立一個UIWindow物件(繼承自UIView),設定為PYAppDelegate的window屬性

  5>載入Info.plist檔案,讀取最主要storyboard檔案的名稱

  6>載入最主要的storyboard檔案,建立白色箭頭所指的控制器物件



  7>並且設定第6步建立的控制器為UIWindow的rootViewController屬性(根控制器)

  8>展示UIWindow,展示之前會將新增rootViewController的view到UIWindow上面(在這一步才會建立控制器的view)

  [windowaddSubview:window.rootViewControler.view];

  進入main函式,在main.m的main函式中執行了UIApplicationMain這個方法,這是ios程式的入口點!

  intUIApplicationMain(intargc,charargv[],NSStringprincipalClassName,NSString*delegateClassName)


  argc、argv:ISOC標準main函式的引數,直接傳遞給UIApplicationMain進行相關處理即可

  principalClassName:指定應用程式類,該類必須是UIApplication(或子類)。如果為nil,則用UIApplication類作為預設值

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

  此函式會根據principalClassName建立UIApplication物件,根據delegateClassName建立一個delegate物件,並將該delegate物件賦值給UIApplication物件中的delegate屬性


  lUIApplication物件會依次給delegate物件傳送不同的訊息,接著會建立應用程式的mainrunloop(事件迴圈),進行事件的處理(首先會呼叫delegate物件的application:didFinishLaunchingWithOptions:)

  程式正常退出時這個函式才返回。如果程序要被系統強制殺死,一般這個函式還沒來得及返回程序就終止了


1、程式入口main函式建立UIApplication例項和UIApplication代理例項
2、在UIApplication代理例項中重寫啟動方法,設定第一ViewController
3、在第一ViewController中新增控制元件,實現對應的程式介面。

  下面我們有圖有真相吧!!!

轉載於:https://blog.51cto.com/liuyafang/1579304