一、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];