天天看点

iOS7应用开发13:应用类UIApplication、网络活动指示器、地图

1、应用类UIApplication:

UIApplication类为应用提供了一个共享的实例,可以提供一些全局信息,其核心作用是提供了iOS程序运行期间的控制和协作工作。应用在运行期必须且只能有一个UIApplication(或者其子类)的实例。调用方法如下:

UIApplication的主要任务是处理用户相关事件,该类会生成一个任务队列存放各种用户事件并逐个进行处理。同时该类还负责将UIControl空间传递给它的消息传递给相应的目标对象。此外,UIApplication类还维护一个当前应用中所有打开的UIWindow窗口的列表,因此可以获取应用的每一个UIView对象。每一个应用对象通常都会有其代理对象,该对象将负责处理应用运行时的一些重要事件,如启动应用、低内存警告、退出应用等,并作出适当的响应。

每一个应用启动时,都将调用UIApplicationMain函数,该函数的一个重要作用就是生成一个UIApplication单例实例,在其后的程序中可以通过上述代码获取此实例的指针。

2、网络活动指示器:

这是UIApplication的一个bool类型的property,其定义如下所示:

如果设为YES,则状态栏会出现网络活动指示,设为NO则将其关闭。

该属性的作用域为全局作用域,所有线程都可以访问。需要考虑解决该属性的线程间冲突问题。

更多与UIApplication相关的内容可以参考官方文档:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006728-CH3-DontLinkElementID_6

3、地图、Core Location框架:

该框架用于处理位置和方位信息,没有UI界面。通过该framework提供的类和协议,可以配置并处理位置和方位事件的传递。

该框架的基类为:CLLocation,其含有的属性有:coordinate, altitude, horizontal/verticalAccuracy, timestamp, speed, course。一个CLLocation的对象代表一个由CLLocationManagers生成的位置信息,该对象包含了当前设备的位置坐标、海拔高度、测量精度以及测量时间,同时在设备移动时还会包含移动目标方位和速度。

获取CLLocation的方法:通过CLLocationManager。CLLocationManager可以作为生成位置信息的工具,使用一个CLLocationManager的实例控制传递位置和方向信息,以及控制什么时候传递事件。同时还可以获取最近的位置和方向信息。

CLLocationManager的对象支持的与方位有关的活动有:

1、以某个预设定的精度检测当前设备的位置移动;

2、对iOS,可以在指南针中报告当前设备指向方位的变化;

3、对感兴趣区间的监视,以及在设备进入该区间时发送相关事件;

4、在应用转入后台运行时推迟更新方位状态;

5、向附近beacons报告范围;

在实际应用中,用户可以设置禁止应用访问位置信息(如禁用GPS等)。在应用启动时,Core Location框架提示用户是否允许访问位置信息。如果禁止,则在调用<code>CLLocationManager</code>的代理方法时会返回一个错误值。利用authorizationStatus方法可以查看应用的完整授权状态。

在使用<code>CLLocationManager</code> 的功能时,需要做的有:

1、在启动服务之前,检测相应设备是否存在,若不存在则放弃操作;

2、创建一个<code>CLLocationManager</code> 实例;

4、设置其他相关的属性;

5、调用响应的方法开始发送相关事件;