码迷,mamicode.com
首页 > 移动开发 > 详细

iOS的程序启动原理

时间:2015-08-06 01:52:16      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:

一、程序启动原理

1.首先找到程序入口,执行main函数

main -> UIApplicationMain

2.UIApplicationMain底层做事情

1> 创建UIApplication对象

2> 创建UIApplication的代理对象,而且给UIApplication对象代理属性赋值

3> 开启主运行循环,作用接收事件,让程序一直运行

4> 加载info.plist,判断下有木有指定main.storyboard,如果指定就会去加载

3.创建UIWindow

1> 加载info.plist,判断有没有指定main.storyboard,指定了main.storyboard,就会去加载main.storyboard,执行main.storyboard的时候创建窗口,加载控制器,设置窗口的根控制器,显示窗口。

2> 在加载info.plist文件之后,如果没有指定main.storyboard,会在程序启动完成的时候创建窗口。 (手动创建窗口

 

 1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
 2     // 窗口显示的注意点:
 3     // 1.一定要强引用
 4     // 2.控件要想显示出来,必须要有尺寸
 5 
 6     // 1.创建窗口
 7     self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
 8 
 9     // 2.创建根控制器,在设置窗口的根控制器
10     UIViewController *vc = [[UIViewController alloc] init];
11 
12     // 设置窗口的根控制器,底层会自动把根控制器的view添加到窗口上,并且让控制器的view有旋转功能
13     self.window.rootViewController = vc;
14 
15     // 3.显示窗口
16     // makeKeyAndVisible:让窗口成为应用程序的主窗口,并且显示窗口
17     [self.window makeKeyAndVisible];
18 
19     return YES;
20 }

 

二、UIApplication

1> UIApplication对象是应用程序的象征

2> 每一个应用都有自己的UIApplication对象,而且是单例的。通过[UIApplication sharedApplication]可以获得这个单例对象。

3> 一个iOS程序启动后创建的第一个对象就是UIApplication对象

4> 利用UIApplication对象,能进行一些应用级别的操作

 

1.应用程序图片的提醒数字

 1    // 获取应用程序的象征
 2    UIApplication *app =  [UIApplication sharedApplication];
 3 
 4     // 应用程序图片的提醒数字
 5     app.applicationIconBadgeNumber = 100;
 6 
 7     // 创建通知对象
 8     UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil];
 9     // 注册用户通知
10     [app registerUserNotificationSettings:settings];

2.联网状态

1     // 联网状态
2     app.networkActivityIndicatorVisible = YES;

3.打开资源,电话,网页,发短信

1 // 打开网页
2 NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
3 [app openURL:url];

4.设置状态栏

 在iOS7之后,状态栏默认交给控制器处理
 1 // 状态栏的隐藏
 2 - (BOOL)prefersStatusBarHidden
 3 {
 4     return YES;
 5 }
 6 // 状态栏的样式
 7 - (UIStatusBarStyle)preferredStatusBarStyle
 8 {
 9     return UIStatusBarStyleLightContent;
10 }

那么在iOS7之后如何设置用UIApplication对象管理状态栏:

(在info.plist中添加一个字典View controller-based status bar appearance = NO)


 使用UIApplication对象管理状态栏的好处
 1.统一管理.(控制器很多的情况下用控制器不好管理)

//    app.statusBarHidden = YES;

 2. 隐藏状态栏可以设置动画

1   [app setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];

 

---恢复内容结束---

 

 

iOS的程序启动原理

标签:

原文地址:http://www.cnblogs.com/iyxooo/p/4706257.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!