6

我可能对区域监控的工作方式感到困惑,但这是我目前所拥有的:

我正在通过我的位置管理器注册一个要监视的区域,该管理器在单例类上实现,这个单例也被设置为位置管理器的委托,因此正在调用实现的方法。

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region

这完全按预期工作,如果应用程序处于活动状态或暂停该方法正在被调用。这也是完全有意义的,因为该类已经加载,并且当区域输入事件发生时,iOS 甚至会将其发送到我的应用程序,该应用程序调用注册的位置管理器(可能有对它的引用),然后它调用任何委托也是沿它注册(因为该类已准备好并已加载)。

问题是,当应用程序被杀死时会发生什么?它是否首先在后台启动?iOS 如何知道要调用什么委托方法,以及它是否已经加载?

4

1 回答 1

8

当您的应用程序已被终止并开始进行位置更新时,还没有位置管理器委托,因此没有通知发送给该委托。系统无法知道您的哪些类应该用作位置管理器委托或如何实例化它。

相反,您application:didFinishLaunchingWithOptions:会像往常一样被调用,但是UIApplicationLaunchOptionsLocationKey在选项字典中设置了。这告诉您的应用程序您需要实例化位置管理器并将其设置为委托。只有在你这样做之后,代理才会被调用并更新区域。

于 2013-07-27T12:56:31.463 回答