一、UIApplicationMain的執行步驟
1.根據第3個參數創建一個UIApplication對象,一個程序對應一個UIApplication對象(單例),UIApplication對象是程序的象徵
2.接下來會根據第4個參數創建一個UIApplication的delegate對象
3.開啓一個消息循環(不斷地監聽一些系統事件)
4.監聽到相應的事件後,就會給代理髮送相應的消息
二、UIApplication
1.設置程序圖標右上角的數字
UIApplication *app = [UIApplication shareApplication];
app.applicationIconBadgeNumber =1;
2.顯示網絡連接狀態
app.networkActivityIndicatorVisible =YES;
3.打電話\發短信\發郵件\打開Safari瀏覽器
NSURL *url = [NSURL URLWithString:@"tel://10086"];
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
NSURL *url = [NSURL URLWithString:@"file://"];
[app openURL:url];
4.隱藏狀態欄
app.statusBarHidden =NO;
三、常見文件
1.*-Info.plist文件
1>項目中最主要的文件,描述了軟件名稱、軟件版本、軟件唯一標識
2>常見設置
*軟件名稱 -- Bundle display name -- CFBundleDisplayName
*軟件版本號 -- Bundle version -- CFBundleVersion
*軟件的唯一標識 -- Bundle identifier -- CFBundleIdentifier
3> Xcode3的時候文件名叫做:Info.plist
2.*-Prefix.pch
1>該文件中的內容,會被項目中的其他所有文件共享
2>用來存放全局性的一些宏定義、#import語句
3>控制日誌輸出
/*
如果軟件處於調試狀態,系統會默認定義一個叫做DEBUG的宏
如果軟件處於發佈打包狀態,系統就不會定義DEBUG這個宏
*/
#ifdef DEBUG
//調試狀態,將MJLog替換成NSLog
#define MJLog(...) NSLog(__VA_ARGS__)
#else
//發佈狀態,將MJLog替換成空
#define MJLog(...)
#endif
3.Default.png
1>程序在啓動過程中會全屏顯示叫Default.png的圖片
2>可以有多個版本
Default.png320x480
Default@2x.png640x960
Default-568h@2x.png640x1136
4.Icon.png
1>軟件圖標
2>蘋果官方文檔搜索“app icon” -->App Icons on iPad and iPhone
四、程序的完整啓動過程(控制器的view的顯示過程)
1.點擊程序圖標
2.執行main函數
3.執行UIApplicationMain函數
4.創建UIApplication對象、UIApplication的delegate對象
5.開啓事件循環監聽系統事件
6.程序加載完畢後調用delegate對象的application:didFinishLaunchingWithOptions:方法
1>創建窗口對象
self.viewController = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen]bounds]];
2>創建控制器對象
self.viewController = [[MJViewController alloc] initWithNibName:@"MJViewController" bundle:nil];
3>設置窗口的根控制器
self.window.rootViewController =self.viewController;
/*
1.控制器MJViewController的view是延遲加載的
2.用到view時,就會調用控制器的loadView方法加載view
3.loadView加載view的默認過程(UIViewController的默認實現)
1> 如果nibName有值,就會加載對應的xib文件來創建view
2> 如果nibName沒有值
1) 優先加載MJView.xib文件來創建view
2) 加載MJViewController.xib文件來創建view
3) 如果沒有找到上面所述的xib文件,就會用代碼創建一個黑色的view
*/
4>讓窗口成爲主窗口、並且可見
[self.window makeKeyAndVisible];