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] 注:需要使用真机进行测 ...
随机推荐
- JQuery事件之鼠标事件
鼠标事件是在用户移动鼠标光标或者使用任意鼠标键点击时触发的. ():click事件:click事件于用户在元素敲击鼠标左键,并在相同元素上松开左键时触发. $('p').click(function( ...
- php无刷新上传图片和文件
核心思想:通过Html的iframe标签属性操作顶级窗口,再用php动态无刷新上传图片文件. 示例如下: demo |------uploads #存放上传的文件 |------index.php | ...
- linux下的apache配置文件详解
.Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd.conf文件中修改. 站点的配置(基本配置) (1) 基本配置: ServerRoot "/mnt/s ...
- Redis总结(四)Redis 的持久化
前面已经总结了Redis 的安装和使用今天讲下Redis 的持久化. redis跟memcached类似,都是内存数据库,不过redis支持数据持久化,也就是说redis可以将内存中的数据同步到磁盘来 ...
- [UML]UML系列——类图Class
相关文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) 一.类图的概念及组成 1.类图的概念 类图是描述类.接 ...
- linux下共享库的注意点之-fpic
在编译共享库必须加上-fpic.这是为什么呢? 首先看一个简单的例子: #include <stdio.h> int fun1() { printf("fun1\n") ...
- 超酷jQuery进度条加载动画集合
在丰富多彩的网页世界中,进度条加载动画的形式非常多样,有利用gif图片实现的loading动画,也有利用jQuery和CSS3实现的进度加载动画,本文主要向大家介绍很多jQuery和CSS3实现的进度 ...
- nyoj 下三角矩阵
Problem A 下三角矩阵 时间限制:1000 ms | 内存限制:65535 KB 描述 给定一个由0和1组成的矩阵.只允许交换相邻的两行,要把矩阵转化成下三角矩阵(主对角线上方的元素都是0 ...
- JDK source 之 LinkedHashMap原理浅谈
注:本文参考JDK1.7.0_45源码. LinkedHashMap是基于HashMap实现的数据结构,与HashMap主要的不同为每个Entry是使用双向链表实现的,并且提供了根据访问顺序进行排序的 ...
- 报错注入分析之(count()、rand()、group by)分析,被大佬称为floor报错注入
PS:在这几天的学习当中很多的文章都将此注入方式称之为“floor报错分析”但经过我这几天的学习.个人觉得不该如此称呼!若君有意请详细阅读此篇文章.特别感谢米怀特的开导,说句实在的研究这个注入有四天了 ...