4、在Cocoa Touch框架中,有UIApplication、UIaccelerometer、NSUserDefaults和NSNotificationCenter等单例。另外,NSFileManager和NSBundle类虽然属于Cocoa框架的内容,但也可以在Cocoa Touch框架中使用。(Cocoa框架中的单例类有NSFileManager、NSBundle、NSWorkspace和NSApplication等)。
  4.1、UIApplication
  UIApplication类的实例提供了应用程序的集中控制点来保持应用的状态。UIApplication实例总是分配给应用程序委托对象(UIApplicationDelegate),通过应用程序委托对象来响应低内存、应用启动、后台运行和应用终止等时间。下面我们重点介绍这个类的几个方法和属性。
  4.1.1 + sharedApplication方法。创建和获得UIApplication实例的方法。
  4.1.2 idleTimerDisabled属性。设定和获得“空闲时间禁止”的状态。默认值是NO,即默认情况下系统会锁定屏幕。
  4.1.3 - openURL:方法。可以打开一些内置的iOS应用,其中包括打开浏览器、打开地图、拨打电话、发送短信和发送E-mail。
1//打开浏览器
2NSURL*url=[NSURLURLWithString:@"http://www.baidu.com"];
3[[UIApplicationsharedApplication]openURL:url];
4
5//打开Google地图时,实际上是通过内置浏览器打开的。
6NSString*searchQuery=@"中国西安??????";
7//将字符串转换为URL编码
8searchQuery=[searchQuerystringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
9NSString*urlString=[NSStringstringWithFormat:@"http://maps.google.com/maps?q=%@",searchQuery];
10[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:urlString]];
11
12//拨打电话
13[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"tel://123456"]];
14
15//发送短信
16[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"sms:123456"]];
17
18//发送E-mail,不带附件
19[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:@"mailto://xxxx@xxx.com"]];
  4.2 UIAccelerometer
  它可以访问重力加速计硬件设备,实时获得设备在x轴、y轴和z轴方向上的重力加速度。+sharedAccelerometer方法是创建和获得UIAccelerometer实例的共享方法。
  与Application类似,这个类也有对应的委托对象,其委托对象是UIAccelerometerDelegate。UIAccelerometer犟实例分配给委托对象,然后由委托对象响应重力加速计时间。
  4.3 NSUserDefaults
  单例类NSUserDefaults可以很方便地读取应用设置项目。
  + standardUserDefaults方法是创建和获得NSUserDefaults实例的静态方法。
  4.4 NSNotificationCenter
  单例类NSNotificationCenter提供消息广播通知,它采用观察者模式的通知机制。
  + defaultCenter方法是创建和获得NSNotificationCenter实例的共享方法。
  4.5 NSFileManager
  NSFileManager提供了访问文件系统的通用操作,可以定位、创建、复制文件和文件夹。在iOS5和Mac OS X v10.7之后,它还可以管理存储在iCloud上的数据。
  + defaultManager方法是创建和获得NSFileManager实例的方法。除了该方法外,创建NSFileManager对象还可以使用实例构造方法- init。这两种方法有较大差别,+ defaultManager方法总是返回相同的NSFileManager对象,但如果要使用委托(NSFileManagerDelegate)完成基于文件的操作并接受通知,应该使用- init方法创建一个新的实例,而不是使用共享的对象。
  4.5NSBundle
  NSBundle提供了动态加载(或卸载)可执行代码、定位资源文件以及资源本地化、访问文件系统等功能。
  + mainBundle方法是创建和获得NSBundle实例的共享方法。