UIApplication的生命周期
2015-11-22 14:51
281 查看
1.创建uiAppliction
UIApplication对象介绍:
1>
一个UIApplication代表是一个应用程序,而且是单例的。
**
用来封装整个应用程序的一个对象,
比如当应用程序执行到某个时期要做什么,
生命周期等。
2>
获取UIApplication对象:
[UIApplication sharedApplication];(单例的)
[b]2.[b]当一个iOS程序启动后,首先创建的第一个对象就是UIApplication[/b][/b]对象。
3.利用UIApplication可以做一些应用界别的操作
4>
利用UIApplication可以做一些应用级别的操作。
*
应用级别操作:
1> QQ有消息的时候右上角的消息条数。
//
获取UIApplication对象。
UIApplication *app = [UIApplication sharedApplication];
//
设置右上角,
有10条消息
app.applicationIconBadgeNumber =
10;
//
取消显示消息
app.applicationIconBadgeNumber =
0;
4.联网操作是,状态栏上的等待图片的指示器
2>
联网操作时,状态栏上的等待图标指示器。waiting图标。
UIApplication *app = [UIApplication sharedApplication];
app.networkActivityIndicatorVisible =
YES;
5.利用UIApplication打开某个资源网站
3>
利用UIApplication打开某个资源:
**
系统会自动根据协议识别使用某个app打开。
UIApplication *app = [UIApplication sharedApplication];
**
打开一个网页:
[app openURL:[NSURL URLWithString:@"http://ios.icast.cn"]];
**
打电话
[app openURL:[NSURL URLWithString:@"tel://10086"]];
**
发短信
[app openURL:[NSURL URLWithString:@"sms://10086"]];
**
发邮件
[app openURL:[NSURL URLWithString:@"mailto://12345@qq.com"]];
**
使用openURL方法也可以打开其他应用,在不同应用之间互相调用对方。
**
美图秀秀,
点击分享到"新浪微博",
打开"新浪微博"选择账号,
跳转回"美图秀秀",
开始分享
**
喜马拉雅,
使用微博、QQ
账号
登录。都需要应用程序间跳转。
7.UIApplicationMain函数介绍.
6. UIApplicationMain函数介绍。
/**
方法名:
参数介绍:
argc:使用main函数的argc即可
argv:使用main函数的argv即可
principalClassName:指定应用程序类名(app的象征),该类必须是UIApplication(或子类),如果为nil,则用UIApplication类作为默认值
delegateClassName:指定应用程序的代理类,UIApplicationDelegate协议中定义的方法,在该类中实现.
UIApplicationMain函数会:
1>
根据principalClassName创建UIApplication对象
2>
根据delegateClassName创建一个delegate对象,并将该delegate对象赋值给UIApplication对象中的delegate属性
程序正常退出时UIApplicationMain函数才返回
默认调用方式:
UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
等价于
UIApplicationMain(argc, argv, @"UIApplication", @"AppDelegate");
**
代理参数必须传递,
如果传nil,
则显示"黑屏"。
*/
10.IOS程序启动过程
1>
打开程序。
2>
调用main函数。
3>
在main函数中调用:
UIApplicationMain()函数。
*
在UIApplicationMain()函数中:
1.
创建UIApplication对象
2.
创建AppDelegate代理对象
3.
将AppDelegate代理对象设置给UIApplication对象。
4.
在UIApplicationMain()函数开启一个"死循环(事件循环)",
所以程序不会退出,
我们可以任意使用。在这个"死循环(事件循环)"中程序不断监听用户的各种事件,
依次处理(依靠"事件队列"实现)。
5.
程序启动完毕:
触发application:didFinishLaunchingWithOptions事件。
在此方法中创建了application对象和它的代理对象,并设置了application的代理对象,开启消息循环。在消息循环中不断监测
消息队列
中是否有新的事件(队列是先进先出)(事件队列的目的是为了提高性能)
(消息循环可以简单理解为一个死循环,当系统有事件被触发,事件所执行的方法会放入消息队列中,消息循环的作用就是不停的去消息
队列中看有没有新的消息,有就执行,用户感觉不到等待的时间)
//先检查info.plist文件中是否有principalClassName键,如果没有的话UIApplicationMain中的principalClassName参
数,会默认被指定为UIApplication
,代理类的会被初始化
4>
程序退出。
9.UIWindow对象
1.简介
8.
UIWindow对象。
** UIWindow是一种特殊的UIView, UIWindow也是继承自UIView。
**
通常一个app只会有一个UIWindow对象。
** iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view,最后将控制器的view添加到UIWindow上,于是控制器的view就显示在屏幕上了
**
一个iOS程序之所以能显示到屏幕上,完全是因为它有UIWindow
**
在文档中找: Cocoa Touch Layer -> UIKit -> Guides -> View Controller Programming Guide
for iOS -> View Controller Basics ->
关于UIWindow与控制器View的关系图片。
**
创建过程UIWindow -> UIViewController -> UIView ->
把UIView加到UIWindow对象中。
1.显示 UIWindow
8.
显示UIWindow([self.window
makeKeyAndVisible])。
2.创建window并显示出来
- (BOOL)application:(UIApplication
*)application didFinishLaunchingWithOptions:(NSDictionary
*)launchOptions {
//实例化一个window的大小
self.window
= [[UIWindow
alloc]initWithFrame:[UIScreen
mainScreen].bounds];
self.window.backgroundColor
= [UIColor
greenColor];
//创建一个UIViewcontroller处理器
UIViewController
*rem = [[UIViewController
alloc]init];
rem.view.backgroundColor
= [UIColor
grayColor];
//添加控制器到window上
self.window.rootViewController
= rem;;
//让window显示出来
[self.window
makeKeyAndVisible];
return
YES;
}
3. 总结
UIwindow就一个作用"显示界面” 将来是通过切换不同的控制器View分别显示UIWindow上
4.没有SB文件的原理
1.
调用main函数。
2.
调用UIApplicationMain函数。
3.
创建UIApplication对象
、
AppDelegate对象
4.
设置UIApplicatio对象的代理是AppDelegate对象。
5. AppDelegate对象开始监听"系统事件(应用程序的事件)",进入"事件循环"。
6.
程序启动完毕后调用
application: didFinishLaunchingWithOptions:方法。
7.
在application: didFinishLaunchingWithOptions:方法中手动创建:
* UIWindow
*
控制器
*
设置UIWindow的根控制器是刚才创建的控制器
*
显示UIWindow
UIApplication对象介绍:
1>
一个UIApplication代表是一个应用程序,而且是单例的。
**
用来封装整个应用程序的一个对象,
比如当应用程序执行到某个时期要做什么,
生命周期等。
2>
获取UIApplication对象:
[UIApplication sharedApplication];(单例的)
[b]2.[b]当一个iOS程序启动后,首先创建的第一个对象就是UIApplication[/b][/b]对象。
3.利用UIApplication可以做一些应用界别的操作
4>
利用UIApplication可以做一些应用级别的操作。
*
应用级别操作:
1> QQ有消息的时候右上角的消息条数。
//
获取UIApplication对象。
UIApplication *app = [UIApplication sharedApplication];
//
设置右上角,
有10条消息
app.applicationIconBadgeNumber =
10;
//
取消显示消息
app.applicationIconBadgeNumber =
0;
4.联网操作是,状态栏上的等待图片的指示器
2>
联网操作时,状态栏上的等待图标指示器。waiting图标。
UIApplication *app = [UIApplication sharedApplication];
app.networkActivityIndicatorVisible =
YES;
5.利用UIApplication打开某个资源网站
3>
利用UIApplication打开某个资源:
**
系统会自动根据协议识别使用某个app打开。
UIApplication *app = [UIApplication sharedApplication];
**
打开一个网页:
[app openURL:[NSURL URLWithString:@"http://ios.icast.cn"]];
**
打电话
[app openURL:[NSURL URLWithString:@"tel://10086"]];
**
发短信
[app openURL:[NSURL URLWithString:@"sms://10086"]];
**
发邮件
[app openURL:[NSURL URLWithString:@"mailto://12345@qq.com"]];
**
使用openURL方法也可以打开其他应用,在不同应用之间互相调用对方。
**
美图秀秀,
点击分享到"新浪微博",
打开"新浪微博"选择账号,
跳转回"美图秀秀",
开始分享
**
喜马拉雅,
使用微博、QQ
账号
登录。都需要应用程序间跳转。
7.UIApplicationMain函数介绍.
6. UIApplicationMain函数介绍。
/**
方法名:
参数介绍:
argc:使用main函数的argc即可
argv:使用main函数的argv即可
principalClassName:指定应用程序类名(app的象征),该类必须是UIApplication(或子类),如果为nil,则用UIApplication类作为默认值
delegateClassName:指定应用程序的代理类,UIApplicationDelegate协议中定义的方法,在该类中实现.
UIApplicationMain函数会:
1>
根据principalClassName创建UIApplication对象
2>
根据delegateClassName创建一个delegate对象,并将该delegate对象赋值给UIApplication对象中的delegate属性
程序正常退出时UIApplicationMain函数才返回
默认调用方式:
UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
等价于
UIApplicationMain(argc, argv, @"UIApplication", @"AppDelegate");
**
代理参数必须传递,
如果传nil,
则显示"黑屏"。
*/
10.IOS程序启动过程
1>
打开程序。
2>
调用main函数。
3>
在main函数中调用:
UIApplicationMain()函数。
*
在UIApplicationMain()函数中:
1.
创建UIApplication对象
2.
创建AppDelegate代理对象
3.
将AppDelegate代理对象设置给UIApplication对象。
4.
在UIApplicationMain()函数开启一个"死循环(事件循环)",
所以程序不会退出,
我们可以任意使用。在这个"死循环(事件循环)"中程序不断监听用户的各种事件,
依次处理(依靠"事件队列"实现)。
5.
程序启动完毕:
触发application:didFinishLaunchingWithOptions事件。
在此方法中创建了application对象和它的代理对象,并设置了application的代理对象,开启消息循环。在消息循环中不断监测
消息队列
中是否有新的事件(队列是先进先出)(事件队列的目的是为了提高性能)
(消息循环可以简单理解为一个死循环,当系统有事件被触发,事件所执行的方法会放入消息队列中,消息循环的作用就是不停的去消息
队列中看有没有新的消息,有就执行,用户感觉不到等待的时间)
//先检查info.plist文件中是否有principalClassName键,如果没有的话UIApplicationMain中的principalClassName参
数,会默认被指定为UIApplication
,代理类的会被初始化
4>
程序退出。
9.UIWindow对象
1.简介
8.
UIWindow对象。
** UIWindow是一种特殊的UIView, UIWindow也是继承自UIView。
**
通常一个app只会有一个UIWindow对象。
** iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view,最后将控制器的view添加到UIWindow上,于是控制器的view就显示在屏幕上了
**
一个iOS程序之所以能显示到屏幕上,完全是因为它有UIWindow
**
在文档中找: Cocoa Touch Layer -> UIKit -> Guides -> View Controller Programming Guide
for iOS -> View Controller Basics ->
关于UIWindow与控制器View的关系图片。
**
创建过程UIWindow -> UIViewController -> UIView ->
把UIView加到UIWindow对象中。
1.显示 UIWindow
8.
显示UIWindow([self.window
makeKeyAndVisible])。
2.创建window并显示出来
- (BOOL)application:(UIApplication
*)application didFinishLaunchingWithOptions:(NSDictionary
*)launchOptions {
//实例化一个window的大小
self.window
= [[UIWindow
alloc]initWithFrame:[UIScreen
mainScreen].bounds];
self.window.backgroundColor
= [UIColor
greenColor];
//创建一个UIViewcontroller处理器
UIViewController
*rem = [[UIViewController
alloc]init];
rem.view.backgroundColor
= [UIColor
grayColor];
//添加控制器到window上
self.window.rootViewController
= rem;;
//让window显示出来
[self.window
makeKeyAndVisible];
return
YES;
}
3. 总结
UIwindow就一个作用"显示界面” 将来是通过切换不同的控制器View分别显示UIWindow上
4.没有SB文件的原理
1.
调用main函数。
2.
调用UIApplicationMain函数。
3.
创建UIApplication对象
、
AppDelegate对象
4.
设置UIApplicatio对象的代理是AppDelegate对象。
5. AppDelegate对象开始监听"系统事件(应用程序的事件)",进入"事件循环"。
6.
程序启动完毕后调用
application: didFinishLaunchingWithOptions:方法。
7.
在application: didFinishLaunchingWithOptions:方法中手动创建:
* UIWindow
*
控制器
*
设置UIWindow的根控制器是刚才创建的控制器
*
显示UIWindow
相关文章推荐
- AutoLayout的基本使用
- 自动布局AutoRssiing
- Android之ListView长按列表项弹出菜单 给菜单项添加事件 获取上下文
- Android快速开发框架_让前端更专注于前端
- android110 jni01
- Unity触发器有时失效的原因
- 如何在Cocos2D游戏中实现A*寻路算法(六)
- 如何在Cocos2D游戏中实现A*寻路算法(六)
- 如何在Cocos2D游戏中实现A*寻路算法(六)
- IOS9.0 调用QQ登录页面不显示
- 定位于定位优化(iOS)
- Broadcast的基本应用
- Android简单的web提交表单登录
- iOS开发-3DTouch开发
- Android实现自定义的相机
- Android实现自定义的相机
- iOS开发-runtime获取设备电池电量
- 名校家教-webview 设置
- Android开发手记(8) ProgressDialog的使用
- android 适配器优化,viewholder的使用