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] 注:需要使用真机进行测 ...
随机推荐
- js实现文本框中内容的放大显示
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- jQuery1.11源码分析(1)-----Sizzle源码概览[原创]
最近在啃jQuery1.11源码,上来就遇到Sizzle这个jQuery的大核心,虽然已经清楚了Sizzle的用途,先绕过去也没事,但明知山有虎偏向虎山行才是我们要做的. 本文面向的阅读对象:正在学习 ...
- MSYS2的源配置
关于MSYS2的文章可以参考下面的链接,笔者不多赘述: msys2安装笔记 MSYS2 + MinGW-w64 + Git + gVim 环境配置 msys2环境搭建 msys2安装g++: pacm ...
- 开始学红帽的RHCE课堂有2次课了,要记下自己的学习经历
我终于申请成功了博客园的博客了. 红帽课堂已经开始2次了,这里的记录可能不分顺序,每天记录一点自己的学习内容.方便自己以后查询. 已经学了以下内容: 1.访问命令行 使用桌面的访问命令 GNOME 3 ...
- CentOS6.3 编译安装LAMP(1):准备工作
卸载yum或rpm安装的amp软件 #在编译安装lamp之前,首先先卸载已存在的rpm包. rpm -e httpd rpm -e mysql rpm -e php yum -y remove htt ...
- JS常见错误和分析
列举一些在前端开发中遇到的一些错误信息和解决办法 错误信息 解决办法 Uncaught SyntaxError: Unexpected token o 使传入的字符串不是符合严格的JSON格式会抛出异 ...
- canvas案例——画时钟
基本思路,先画一个200半径的圆 ctx.arc(250,250,200,0,2*Math.PI); 然后再画时分刻度,可以先利用translate变化坐标到圆的中心点,然后再通过rotate旋转 / ...
- PHP获取一年有几周以及每周开始日期和结束日期
最近接了一个项目,其中有一需求是用php获取一年有几周以及每周开始日期和接触日期.在网上找些资料没有合适的,于是自己做了一份,下面通过两种方式实现PHP获取一年有几周以及每周开始日期和结束日期 代码一 ...
- Linux高并发机制——epoll模型
epoll是一个特别重要的概念,常常用于处理服务端的并发问题.当服务端的在线人数越来越多,会导致系统资源吃紧,I/O效率越来越慢,这时候就应该考虑epoll了.epoll是Linux内核为处理大批句柄 ...
- jstl catch if choose标签
catch标签: catch标签用来处理异常 属性: * var :用来出现异常保存到的变量. 代码: <c:catch var="e"> <% int i = ...