iPhone程序運行流程淺談

1. 和大多數語言一樣,每一個iPhone應用也都是從主函數開始運行,它的main函數都在XCode的Other Reasource邏輯目錄下。

???

[cpp] view plaincopyprint?
  1. UIApplicationMain(argc, argv, nil, nil);?
[cpp] view plaincopyprint?
  1. UIApplicationMain(argc,?argv,?nil,?nil);??

??? 系統會自動給你生成上面的代碼,第三個參數和第四個參數指明了應用程序的生命周期管理類和對生命周期管理類產生事件進行響應的委托類,第三個參數被指定為nil則會被視為UIApplication,程序的生命周期管理類一般就是UIApplication,也或者是他的子類(一般沒人這么干吧?)。

??? 第四個參數如果是nil的話,則該函數會去參考**-info.plist這個配置文件來獲得一個主NIB文件以完成余下的工作。

??? 在**-info.plist文件中他會去找Main nib file base name這一列的值作為要載入的NIB文件名。(默認都是MainWindow)

??? 并且從中指定生命周期管理類的委托。

2. 打開Resource目錄下的MainWindowa.xib,會看到Files‘s Owner的Class是UIApplication。

??? 這個類有一個委托,Interface Builder將他連接到了** App Delegate。這里的意思就是說在運行周期中UIApplication會產生一些事件,但是他交給了** APP Delegate來做處理。

??? 打開** APP Delegate.h,默認是在Classess邏輯目錄下。可以看到UIWindow和一個Controller都被聲明成了IBOutlet。

[cpp] view plaincopyprint?
  1. @interface testSDKAppDelegate : NSObject <UIApplicationDelegate> {?
  2. ??? UIWindow *window;?
  3. ??? testViewController *viewController;?
  4. }?
  5. ?
  6. @property (nonatomic, retain) IBOutlet UIWindow *window;?
  7. @property (nonatomic, retain) IBOutlet testViewController *viewController;?
[cpp] view plaincopyprint?
  1. @interface?testSDKAppDelegate?:?NSObject?<UIApplicationDelegate>?{??
  2. ????UIWindow?*window;??
  3. ????testViewController?*viewController;??
  4. }??
  5. ??
  6. @property?(nonatomic,?retain)?IBOutlet?UIWindow?*window;??
  7. @property?(nonatomic,?retain)?IBOutlet?testViewController?*viewController;??

??? 這樣就可以在Interface Builder里連接,并且完成相應的初始化工作。

??? 觀察MainWindow.xib的** APP Delegate實例,Interface Builder已經為我們連接上了一個Window和一個Controller實例。

??? 再看看** APP Delegate.m。

[cpp] view plaincopyprint?
  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {?????
  2. ?????
  3. ??? // Override point for customization after app launch. ?
  4. ??? [self.window addSubview:viewController.view];?
  5. ??? [self.window makeKeyAndVisible];?
  6. ?
  7. ??? return YES;?
  8. }?
[cpp] view plaincopyprint?
  1. -?(BOOL)application:(UIApplication?*)application?didFinishLaunchingWithOptions:(NSDictionary?*)launchOptions?{??????
  2. ??????
  3. ????//?Override?point?for?customization?after?app?launch.? ??
  4. ????[self.window?addSubview:viewController.view];??
  5. ????[self.window?makeKeyAndVisible];??
  6. ??
  7. ????return?YES;??
  8. }??

??? 他在UIApplication的這個回調方法中,將Controller的視圖加載到了Window上。

??? 關于這個回調方法文檔當中有這么一句話, It is called after your application has been launched and its main nib file has been loaded. 就是說在程序運行起來并且主nib文件完成加載后,這個委托方法將會被調用。

??? 整個程序目前暫時不需要我們考慮的初始化流程就結束了, 在這之后,我們就可以加入我們程序的邏輯了。

??? 由于時間倉促,如有疏漏還請大家指出。

??? 希望本文可以幫到你。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/388372.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/388372.shtml
英文地址,請注明出處:http://en.pswp.cn/news/388372.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Trie樹kmpAC自動機后綴數組Manacher

Trie 計數Trie&#xff0c;讀清題意很重要 https://vjudge.net/problem/UVALive-5913 kmp AC自動機 模板&#xff1a;https://vjudge.net/problem/UVA-11488 https://vjudge.net/problem/UVA-11019 https://vjudge.net/problem/UVA-11468 https://vjudge.net/problem/UVALive-4…

矩陣線性相關則矩陣行列式_搜索線性時間中的排序矩陣

矩陣線性相關則矩陣行列式聲明 (Statement) We have to search for a value x in a sorted matrix M. If x exists, then return its coordinates (i, j), else return (-1, -1).我們必須在排序的矩陣M中搜索值x 。 如果x存在&#xff0c;則返回其坐標(i&#xff0c;j) &#x…

計算機英文版個人簡歷發文,計算機個人簡歷英文_英文簡歷.doc

計算機個人簡歷英文_英文簡歷I have the honor to present a brief introduction of myself to you in compliance with the requirements of your graduate admissionI was born in November 7th, 1966, at the town of Changing, Beijing. My parents are doing business and…

一地雞毛 OR 絕地反擊,2019年區塊鏈發展指南

如果盤點2018年IT技術領域誰是“爆款流量”,那一定有個席位是屬于區塊鏈的,不僅經歷了巨頭、小白紛紛入場的光輝歲月,也經歷了加密貨幣暴跌,爭先退場的一地雞毛。而當時間行進到2019年,區塊鏈又將如何發展呢? 近日,全球知名創投研究機構CBInsight發布了《What’s Next …

iphone UITableView及UIWebView的使用

1。新建一個基于Navigation&#xff0d;based Application的工程。 2。修改原來的RootViewController.h,RootViewController.m,RootViewController.xib為MyTableViewController.h,MyTableViewController.m,MyTableViewController.xib。 3。點擊MainVindow.xib&#xff0c;將R…

python 的datetime模塊使用

1.datetime模塊主要是5個類 date #日期類 年月日 datetime.date(year,month,day) time #時間類 時分秒 datetime.time(hour,minute,second,microsecond,tzoninfo),返回18:29:30 datetime #日期時間類 datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinf…

物聯網數據可視化_激發好奇心:數據可視化如何增強博物館體驗

物聯網數據可視化When I was living in Paris at the beginning of this year, I went to a minimum of three museums a week. While this luxury was made possible by the combination of an ICOM card and unemployment, it was founded on a passion for museums. Looking…

計算機公開課教學反思,語文公開課教學反思

語文公開課教學反思引導語&#xff1a; 在語文的公開課結束后&#xff0c;教師們在教學 有哪些需要反思的呢?接下來是yjbys小編為大家帶來的關于語文公開課教學反思&#xff0c;希望會給大家帶來幫助。篇一&#xff1a;語文公開課教學反思今天早上&#xff0c;我上了一節語文…

中國連續十年成馬來西亞最大貿易伙伴

中新社吉隆坡1月30日電 (記者 陳悅)馬來西亞國際貿易和工業部30日發布的2018年馬來西亞貿易報告顯示&#xff0c;2018年馬來西亞與中國的貿易額約為3138.1億林吉特(馬來西亞貨幣&#xff0c;約合774億美元)&#xff0c;較上年同期增長8.1%&#xff0c;約占馬來西亞對外貿易總額…

Iphone NSMutableArray,NSMutableDictionary AND 動態添加按鈕

一.NSMutableDictionary NSMutableDictionary * tags&#xff1b; 1.NSMutableDictionary 添加內容&#xff1a; [tags setValue:xxx forKey :xxx]; 2.NSMutableDictionary 遍歷&#xff1a; for(NSString * title in tags){ //其中得到的title是key } 3.NSMutableD…

bzoj2938: [Poi2000]病毒

被Star_Feel大爺帶著做題 明顯大力AC機然后找環 本來我一開始想的是先去有另一個病毒為前綴的病毒&#xff0c;結果今天早上寫的時候偷懶沒寫 結果跳fail的時候會跳到中間。。。無語&#xff0c;Star_Feel大爺叫我son或一下now和fail就過了 還有神仙是直接把fail接到兒子的更流…

bigquery數據類型_將BigQuery與TB數據一起使用后的成本和性能課程

bigquery數據類型I’ve used BigQuery every day with small and big datasets querying tables, views, and materialized views. During this time I’ve learned some things, I would have liked to know since the beginning. The goal of this article is to give you so…

中國計算機學科建設,計算機學科建設戰略研討會暨“十四五”規劃務虛會召開...

4月15日下午&#xff0c;信息學院計算機系舉辦了計算機科學與技術學科建設戰略研討會暨“十四五”規劃務虛會。本次會議的主旨是借第五輪學科評估的契機&#xff0c;總結計算機學科發展的優劣勢&#xff0c;在強調保持優勢的同時&#xff0c;更著眼于短板和不足&#xff0c;在未…

iphone開發如何隱藏各種bar

轉載至&#xff1a;http://blog.csdn.net/riveram/article/details/7291142 狀態條StatusBar [cpp] view plaincopyprint?[UIApplication sharedApplication].statusBarHidden YES; [UIApplication sharedApplication].statusBarHidden YES; 導航條NavigationBar [cpp] v…

Swift5.1 語言指南(九) 閉包

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★?微信公眾號&#xff1a;山青詠芝&#xff08;shanqingyongzhi&#xff09;?博客園地址&#xff1a;山青詠芝&#xff08;https://www.cnblogs.com/strengthen/&#xff09;?GitHub地址&a…

服務器被攻擊怎么修改,服務器一直被攻擊怎么辦?

原標題&#xff1a;服務器一直被攻擊怎么辦&#xff1f;有很多人問說&#xff0c;網站一直被攻擊&#xff0c;什么被掛馬&#xff0c;什么被黑&#xff0c;每天一早打開網站&#xff0c;總是會出現各種各樣的問題&#xff0c;這著實讓站長們揪心。從修改服務器管理賬號開始&…

腳本 api_從腳本到預測API

腳本 apiThis is the continuation of my previous article:這是我上一篇文章的延續&#xff1a; From Jupyter Notebook To Scripts從Jupyter Notebook到腳本 Last time we discussed how to convert Jupyter Notebook to scripts, together with all sorts of basic engine…

Iphone代碼創建視圖

要想以編程的方式創建視圖&#xff0c;需要使用視圖控制器中定義的viewDidLoad方法&#xff0c;只有在運行期間生成UI時才需要實現該方法。 在此只貼出viewDidLoad方法的代碼&#xff0c;因為只需要在這個方法里面編寫代碼&#xff1a; [cpp] view plaincopyprint?- (void)vi…

聊聊flink Table的OrderBy及Limit

序 本文主要研究一下flink Table的OrderBy及Limit 實例 Table in tableEnv.fromDataSet(ds, "a, b, c"); Table result in.orderBy("a.asc");Table in tableEnv.fromDataSet(ds, "a, b, c");// returns the first 5 records from the sorted …

binary masks_Python中的Masks概念

binary masksAll men are sculptors, constantly chipping away the unwanted parts of their lives, trying to create their idea of a masterpiece … Eddie Murphy所有的人都是雕塑家&#xff0c;不斷地消除生活中不必要的部分&#xff0c;試圖建立自己的杰作理念……埃迪墨…