IOS 程序啟動過程

應用程序啟動過程:

  1. 找到main.m 文件
  2. 執(zhí)行main函數(shù)
  3. 執(zhí)行UIApplicationMain()函數(shù)
  1. 實例化UIApplication對象 --> 繼承自 UIApplication
  1. 設置UIApplication的代理 --> AppDelegate 如果需要自定義需要 遵守 UIApplicationDelegate

  2. 開啟一個主循環(huán) --> 監(jiān)聽用戶的交互事件 --> 直到應用程序結(jié)束之后才會停止

  3. 檢測是否存在sb

  • 如果存在

    1. 實例化一個UIWindow對象
    2. 實例化箭頭所指的控制器器
    3. 實例化控制器的view和子view
    4. 設置控制器成為window的根控制器
    5. 讓window 可見

    調(diào)用AppDelegate的方法
    didFinishLaunchWithOpitons: 完成啟動

  • 如果不存在sb
    直接調(diào)用AppDelegate的方法
    didFinishLaunchWithOpitons: 完成啟動
    didFinishLaunchWithOpitons:

    1. 實例化UIWindow, 賦值 給 self.window
    2. 實例化一個ViewController
    3. 設置self.window.roothViewController =

代碼示例

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

  1. 實例化一個window
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    self.window.backgroundColor = [UIColor whiteColor];

  2. 實例化控制器

    // 如果存在和類名相同的xib , 通過 alloc init 方法,內(nèi)部會優(yōu)先加載xib
    TestViewController *controller = [[TestViewController alloc] init];

  3. 設置window的根控制器
    self.window.rootViewController = controller;

  4. 讓window成為主窗口并可見
    [self.window makeKeyAndVisible];
    return YES;
    }


創(chuàng)建控制器的多種方式

/**
第一種方式: 使用class 創(chuàng)建控制器

 ViewController *controller = [[ViewController alloc] init];
 */

/**
 第二種方式:  使用storyboard
 
 // 實例化 storyboard對象
 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
 
 // 取出storyboard中的 控制器 , 使用這種方式實例化控制器的時候, 箭頭必須在,如果不存在, 就會加載不到控制器
 UIViewController *controller = [storyboard instantiateInitialViewController];
 
 */

/**
 第三種: 通過 storyboard 的 storyboard ID
 
 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
 
 UIViewController *controller = [storyboard instantiateViewControllerWithIdentifier:@"bigfang"];
 */

/**
 第四種: 加載xib
 
 UIViewController *controller = [[NSBundle mainBundle] loadNibNamed:@"LoadXib" owner:nil options:nil].lastObject;
 */

/**
 第五種: 實例化xib
 
 在xib中沒有view存在
 
 reason: '-[UIViewController _loadViewFromNibNamed:bundle:] was unable to load a nib named "IntinalTest"'
 
 view沒有進行關聯(lián)
 
 reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "IntinalTest" nib but the view outlet was not set.'
 
 
 UIViewController *controller = [[UIViewController alloc] initWithNibName:@"IntinalTest" bundle:nil];
 
 */

/**
 第六種: 和同類名xib
 
 
 // 如果存在和類名相同的xib , 通過 alloc init 方法,內(nèi)部會優(yōu)先加載xib
 TestViewController *controller = [[TestViewController alloc] init];
 */
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末谜洽,一起剝皮案震驚了整個濱河市空入,隨后出現(xiàn)的幾起案子蛛勉,更是在濱河造成了極大的恐慌痪枫,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件搀继,死亡現(xiàn)場離奇詭異化漆,居然都是意外死亡憾筏,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門蓄喇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來发侵,“玉大人,你說我怎么就攤上這事妆偏∪婿” “怎么了?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵钱骂,是天一觀的道長叔锐。 經(jīng)常有香客問我,道長见秽,這世上最難降的妖魔是什么愉烙? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮解取,結(jié)果婚禮上步责,老公的妹妹穿的比我還像新娘。我一直安慰自己肮蛹,他們只是感情好勺择,可當我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著伦忠,像睡著了一般省核。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上昆码,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天气忠,我揣著相機與錄音邻储,去河邊找鬼。 笑死旧噪,一個胖子當著我的面吹牛吨娜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播淘钟,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼宦赠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了米母?” 一聲冷哼從身側(cè)響起勾扭,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎铁瞒,沒想到半個月后妙色,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡慧耍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年身辨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芍碧。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡煌珊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出师枣,到底是詐尸還是另有隱情怪瓶,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布践美,位于F島的核電站洗贰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏陨倡。R本人自食惡果不足惜敛滋,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望兴革。 院中可真熱鬧绎晃,春花似錦、人聲如沸杂曲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽擎勘。三九已至咱揍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間棚饵,已是汗流浹背煤裙。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工掩完, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人硼砰。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓且蓬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親题翰。 傳聞我的和親對象是個殘疾皇子恶阴,可洞房花燭夜當晚...
    茶點故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 關鍵步驟 一個程序從main函數(shù)開始啟動。代碼如下: int main(int argc, char * argv...
    JzRo閱讀 584評論 0 2
  • 一遍愿、啟動完整過程 1.main函數(shù)main.m 2.UIApplicationMain 創(chuàng)建UIApplicati...
    Z_Han閱讀 598評論 0 5
  • *7月8日上午 N:Block :跟一個函數(shù)塊差不多存淫,會對里面所有的內(nèi)容的引用計數(shù)+1,想要解決就用__block...
    炙冰閱讀 2,488評論 1 14
  • 來到這座城已近一年沼填, 感受這里的夏熱與冬涼; 來到這座城已近一年括授, 觸摸淅淅之秋雨與飛舞之春絮坞笙; 來到這座城已近一...
    softrain閱讀 405評論 0 0
  • 這次工作坊為中階課程,適合那些已經(jīng)具備塔羅基礎知識荚虚,并且想在解讀能力和自我探索方面更上一層樓的同學薛夜。 這次課程會從...
    菲亞Faya閱讀 1,213評論 0 2