秃萝卜的技术博客

A iOS Developer Newer

欢迎来到我的技术博客,我是秃萝卜(@Tuluobo),一名 iOS 开发菜鸟。


希望能在 iOS 开发的道路上越走越远,拥有自己开发的千万级用户的 App 。

UIApplication 和 AppDelegate

每一个 iOS 应用都具有的两个类,他们是一个 iOS App 的灵魂支撑。今天总结一下 UIApplication 和 AppDelegate。

UIApplication

UIApplication 对象是应用程序的象征。

每一个应用都有自己的UIApplication对象,而且是单例的。

可以通过[UIApplication sharedApplication] 可以获得这个单例对象。

一个iOS程序启动后创建的第一个对象是UIApplication对象,使用UIApplication对象,能进行一些系统级别的操作。

// 单例模式实现(后面详细学习,自己的写法/模仿苹果API)
// 1、外部不能调用alloc,调用会抛异常。
// 2、提供一个方法共外部调用获取实例
// 3、内部创建一次单例,类加载的时候调用(load函数)

常用属性:

  • 设置应用程序图标右上角的红色提醒数字(@property(nonatomic) NSInteger applicationIconBadgeNumber)
  • 设置联网指示器的可见性(isNetworkActivityIndicatorVisible)
  • iOS 中的状态栏设置(iOS9 中跟状态栏有关的已经过期,状态栏交给控制器UIViewController管理了)
  • 应用界别的跳转 (openURL)
// UIApplication

// 设置图标数字
UIApplication *app = [UIApplication sharedApplication];
// 创建用户通知对象(iOS8以后需要设置)
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil];
[app registerUserNotificationSettings:settings];
// 设置提醒数字
[app setApplicationIconBadgeNumber:100];

// 设置联网状态
[app setNetworkActivityIndicatorVisible:YES];

// 设置状态栏(iOS9 设置状态栏已经失效)
[app setStatusBarHidden:YES];

// 打电话,打开网页等应用跳转
NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
if ([app canOpenURL:url]) {
  [app openURL:url];
}   // 根据协议头可以处理跳转

UIApplication 和delegate

AppDelegate 将代替 UIApplication 处理一些系统事件,遵守UIApplicationDelegate协议。

事件包括:

  • 应用程序的生命周期事件(启动,关闭,进入后台)
  • 应用级跳转(openURL的接收)
  • 内存警告
// 应用程序的生命周期方法
@implementation AppDelegate
// 程序启动完成时候调用
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    return YES;
}
// 程序即将失去焦点的时候
- (void)applicationWillResignActive:(UIApplication *)application { }
// 程序完全进入后台的时候
- (void)applicationDidEnterBackground:(UIApplication *)application { 
    // 保存数据操作
}
// 程序集将进入前台的时候
- (void)applicationWillEnterForeground:(UIApplication *)application { }
// 程序完全获得焦点的时候
- (void)applicationDidBecomeActive:(UIApplication *)application { }
// 程序即将终止的时候
- (void)applicationWillTerminate:(UIApplication *)application { }
@end
最近的文章

在 iOS App 中使用七牛的存储服务

最近,在做一个需要存储文件的应用,自然就先分析和测试了各种云存储的方案,刚开始用是的是阿里云的OSS,不得不说,他们的SDK开发的确实不错,使用起来很容易,但是,他们没有免费的流量,就在我测试的过程中,就产生了一些小的费用,后来我就在考虑一些有免费流量的存储,自然国内的另一提供存储方案的被我发现了——七牛,他每个月有很多的流量,足够个人使用了。但是,他的移动客户端 SDK 开发的是一个阉割版,只能上传,不能管理和下载等。官方的文档中有很明确的提示:为了防止申请的AccessKey和Acce...…

七牛存储, token继续阅读
更早的文章

从认识 XCode 项目开始 iOS 开发

iOS 开发的官方IDE就是XCode,所以我们要成为一名合格的iOS developer,就要从认识XCode开始,今天,我将总结学习XCode项目开发的一些内容。xcode6 以后的变化XCode 6.0 之后变化比较大。与Xcode 5.0 相比较:xcode6 没有 Frameworks 文件夹,自动导入常用到的Frameworkxcode6 有一个 LaunchScreen.xib 文件,启动界面 xib 文件,但是 xcode5 默认没有。在工程的设置项 General—App...…

iosXcode继续阅读