多控制器管理 ——程序启动过程

来源:互联网 发布:h5棋牌游戏源码 编辑:程序博客网 时间:2024/05/16 14:08

一、UIApplicationMain的执行步骤

1.根据第3个参数创建一个UIApplication对象,一个程序对应一个UIApplication对象(单例),UIApplication对象是程序的象征

2.接下来会根据第4个参数创建一个UIApplicationdelegate对象

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对象、UIApplicationdelegate对象

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.控制器MJViewControllerview是延迟加载的

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


0 0