1.0 UIApplication对象
|
举例:通过代码获取两个UIApplication对象,打印地址可以看出地址是相同的。
- (void)viewDidLoad { |
打印结果:
2015-12-02 13:34:58.847 01 UIApplication[4563:852645] app1=0x7fe2b3e0eaa0 ---- app2 = 0x7fe2b3e0eaa0
|
|
举例:
- (void)viewDidLoad { |
打印结果:
2015-12-02 13:39:00.270 01 UIApplication[4675:867735] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'There can only be one UIApplication instance.'
|
|
(1)应用图标显示数字 (详见1.1 常用属性) |
(2)状态栏上的等待图标指示器 (详见1.1 常用属性) |
(3)利用UIApplication打开某个资源 (openURL:方法)
✓系统会自动根据协议识别使用某个app打开
//打开一个网页 : ✓使用openURL方法也可以打开其他应用,在不同应用之间互相调用对方。
美图秀秀, 点击分享到"新浪微博", 打开"新浪微博"选择账号, 跳转回"美图秀秀", 开始分享
喜马拉雅, 使用微博、QQ 账号 登录。都需要应用程序间跳转。
|
(4)通过UIApplication管理状态栏 (详见1.2 管理状态栏) |
//应用程序图标右上角的红色提醒数字(默认为0)
@property(nonatomic) NSInteger applicationIconBadgeNumber; 举例: - (void)viewDidLoad {
[super viewDidLoad]; //获取单例对象
UIApplication *app = [UIApplication sharedApplication]; // 创建用户通知设置 (iOS8 后要求设置通知的时候必须经过用户许可)
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
UIUserNotificationSettings *settings =
[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge
categories:nil];
//注册权限
[app registerUserNotificationSettings:settings];
} //设置数字
app.applicationIconBadgeNumber = ; }
//联网指示器的可见性 (默认为 no)
@property(nonatomic,getter=isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible;
举例: - (void)viewDidLoad {
[super viewDidLoad]; //获取单例对象
UIApplication *app = [UIApplication sharedApplication]; //设置网络指示器
app.networkActivityIndicatorVisible = YES; }
//状态栏的样式
-(UIStatusBarStyle)preferredStatusBarStyle; //状态栏的可见性
-(BOOL)prefersStatusBarHidden;
// 状态栏可见性(默认为 no) --- UIViewController管理 (推荐使用)
- (BOOL)prefersStatusBarHidden {
return NO;
} //状态栏的样式 --- UIViewController管理 (推荐使用)
- (UIStatusBarStyle)preferredStatusBarStyle { /* 状态栏样式 statusBarStyle
UIStatusBarStyleDefault 状态栏为黑色
UIStatusBarStyleLightContent 状态栏为白色
UIStatusBarStyleBlackTranslucent
UIStatusBarStyleBlackOpaque
*/ return UIStatusBarStyleDefault;
}
(1)在ios 7 以后如果要通过UIApplication管理,则首先要在Info.plist文件中增加一个配置项
|
//状态栏的样式 --- UIApplication管理 |
UIApplication:状态栏的样式只设置一次,使用动画效果 |
UIViewController:状态栏是否隐藏,样式不一样 |
|
delegate可处理的事件如:
|
|
文件位置:Supporting Files —> main.m |
#import <UIKit/UIKit.h> |
AppDelegate的主要作用就是处理(监听)应用程序本身的各种事件 |
要想成为UIApplication的代理对象, 必须遵守:UIApplicationDelegate协议 |
// AppDelegate.h #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) UIWindow *window; @end |
// AppDelegate.m #import "AppDelegate.h" @interface AppDelegate () @end @implementation AppDelegate // app启动完成 调用该方法 启动之后,将不再调用此方法!
// 如果因为内存等原因,应用程序被操作系统干掉,再次点击图标,会调用此方法!
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSLog(@"%s", __func__);
return YES;
} // app即将退出活动状态的时候调用 (将要失去焦点:不能和用户交互)( 此方法在来电或来短信的时候被调用)
// 游戏应该再此方法中暂停游戏进程!此方法在游戏开发中尤为重要!
- (void)applicationWillResignActive:(UIApplication *)application {
NSLog(@"%s", __func__);
} // app已经进入后台 调用该方法 (在此方法中保存应用程序的数据和状态)
// 应用程序退出到后台,释放共享资源,保存用户数据,停止时钟,保存足够的应用程序状态信息...
- (void)applicationDidEnterBackground:(UIApplication *)application {
NSLog(@"%s", __func__);
} // app即将进入前台的时候 调用该方法 (在此方法中还原应用程序的数据和状态)
- (void)applicationWillEnterForeground:(UIApplication *)application {
NSLog(@"%s", __func__);
} // app已经进入活动状态, 重新启动原来暂停的状态 (重新获取焦点:可以和用户交互)
- (void)applicationDidBecomeActive:(UIApplication *)application { NSLog(@"%s", __func__);
} // app接收到内存警告 调用该方法
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
NSLog(@"%s", __func__);
} // app将要被杀死 调用该方法
// 注意:1.用户主动关闭 2.系统因为内存不够关闭了程序
- (void)applicationWillTerminate:(UIApplication *)application { NSLog(@"%s", __func__);
}
@end
1.0 UIApplication对象的更多相关文章
- UIApplication对象及其代理UIApplicationDelegate[转]
在开发过程中我们需要一些全局对象来将程序的各个部分连接起来,这些全局对象中最重要的就是UIApplication对象.但在实际编程中我们并不直接和UIApplication对象打交道,而是和其代理打交 ...
- jq对象转为dom对象:$(".div1")[0] dom对象转为jq对象:$(dom对象)
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...
- 转载:as3.0下对象类型返回值与变量默认值的详细说明
转自:http://www.cuplayer.com/player/PlayerCodeAs/2012/0905367.html Null.NaN.undefined 及各自应用对象:变量的默认值: ...
- 8.0 BOM对象
主要的掌握的知识结构图 1 Window 2 控制窗口.框架.弹出窗口 3 利用location对象中的页面信息 4 使用 navigator 对象了解浏览器 1.1 BOM的核心对象是window, ...
- C#使用AutoMapper6.2.2.0进行对象映射
先说说DTO DTO是个什么东东? DTO(Data Transfer Object)就是数据传输对象,说白了就是一个对象,只不过里边全是数据而已. 为什么要用DTO? 1.DTO更注重数据,对领域对 ...
- [Xcode 实际操作]八、网络与多线程-(2)使用UIApplication对象打开网页
目录:[Swift]Xcode实际操作 本文将演示如何使用应用程序单例对象,打开指定的网页. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKi ...
- [Xcode 实际操作]八、网络与多线程-(3)使用UIApplication对象拨打电话
目录:[Swift]Xcode实际操作 本文将演示如何使用应用程序单例对象,拨打电话的功能. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 注:需要使用真机进行测 ...
- [Xcode 实际操作]八、网络与多线程-(4)使用UIApplication对象发送短信
目录:[Swift]Xcode实际操作 本文将演示如何使用应用程序单例对象,发送短信的功能. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 注:需要使用真机进行测 ...
- [Xcode 实际操作]八、网络与多线程-(5)使用UIApplication对象发送邮件
目录:[Swift]Xcode实际操作 本文将演示如何使用应用程序单例对象,发送邮件的功能. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 注:需要使用真机进行测 ...
随机推荐
- CLI:如何使用Go开发命令行
CLI或者"command line interface"是用户在命令行下交互的程序.由于通过将程序编译到一个静态文件中来减少依赖,一次Go特别适合开发CLI程序.如果你编写过安装 ...
- J2EE学习路线图
一:J2SE 面向对象-封装.继承.多态 内存的分析 递归 集合类.泛型.自动打包与解包.Annotation IO 多线程.线程同步 TCP/UDP AWT.事件模型.匿名类 正则表达式 反射机制 ...
- JVM垃圾回收算法
- <head>中<meta name="viewport" content="width=device-width,initical-scale=1"的作用>
<meta name="viewport" content="width=device-width,initical-scale=1"的作用> co ...
- PerfMon.exe通过命令管理计数器
通过PerfMon命令可以管理计数器,添加删除调整等等. 例1:Logman:在本地和远程系统上,管理和调度性能计数器和事件跟踪日志. master..xp_cmdshell 'logman quer ...
- 使用OLEQAxObject导出Log日志文件
头文件<QAxObject> Qt project settings需要支持QtActivex container 具体导出如下:(单列这里) QString filepath=QFile ...
- 如何 实现PHP多版本的 共存 和 切换?
编译PHP时指定路径 ./configure --prefix=/opt/php/php-5.6 make && make install 这样可以PHP版本就可以安装到一个特别的路径 ...
- iOS开发——高级篇——iPad开发、iPad开发中的modal
一.iPad简介 1.什么是iPad一款苹果公司于2010年发布的平板电脑定位介于苹果的智能手机iPhone和笔记本电脑产品之间跟iPhone一样,搭载的是iOS操作系统 2.iPhone和iPadi ...
- BZOJ4590——[Shoi2015]自动刷题机
1.题意:题意很简洁吧,就不概括了 2.分析:我思考了半天,我猜答案满足单调...没敢写,看了题解去问Claris为啥单调,Claris一句话" 因为n越大明显不可能做更多题 ", ...
- Servlet 之 GenericServlet
我们都知道javaweb中servlet的三大组件 servlet filter listener 实现动态资源的 是可以继承 Servlet接口,或者集成GenericServlet .Http ...