1

所以,我已经关注了其他相关线程,但由于某种原因,我仍然遇到这个错误,我准备把头发扯掉。我已经实现了 locationManager:didFailWithError 来检查用户是否选择“不允许”来使用当前位置。

-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
NSLog(@"IN ERROR");
if ([error code] == kCLErrorDenied){  
 [manager stopUpdatingLocation];
 }
}

但是,当用户选择'不允许'时总是出现以下错误......这很奇怪,尤其是文本'IN ERROR'出现的顺序。

ERROR,Time,293420691.000,Function,"void CLClientHandleDaemonDataRegistration(__CLClient*, const CLDaemonCommToClientRegistration*, const __CFDictionary*)",服务器不接受客户端注册 1 2010-04-19 21:44:51.000 testApp[1414:207] IN ERROR

因此,它甚至在有机会进入 didFailWithError 函数之前就输出了这个错误。有人对可能发生的事情有任何想法吗?locationManager 的其余代码如下:

self.locationManager = [[[CLLocationManager alloc] init] autorelease];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
locationManager.distanceFilter = 2;  
[locationManager startUpdatingLocation];
4

2 回答 2

0

看起来只是来自核心位置的信息性消息。它不会使您的应用程序崩溃,用户不会看到它,它仍然会使用正确的错误代码调用 didFailWithError。

在我的测试中,该消息出现在 iPhone 模拟器和设备 (3.1.3) 和 iPad 模拟器上,但不在 iPad 设备 (3.2) 上。

于 2010-04-20T02:59:43.563 回答
0

如果您也在使用 MapKit,这是 MapKit 中的错误。MapKit 正在向 Core Location 注册,然后没有正确处理用户拒绝位置更新或失败时报告的错误。它应该通过委托方法传递这个错误(就像它对地理编码错误所做的那样),但没有。

不幸的是,我想不出任何方法来拦截来自核心位置的消息,因为 MapKit 维护了一个用于获取位置的 CLLocationManager 实例,而这就是向其委托报告错误的实例。

于 2010-05-23T07:58:42.653 回答