是什么原因(以及如何修复)这个奇怪的核心位置错误?

时间:2011-02-23 23:31:35

标签: iphone objective-c ios core-location

  

ERROR,通用,时间,320195751.128,功能,“空隙   CLClientHandleRegistrationTimerExpiry(__ CFRunLoopTimer *   void *)“,注册计时器已过期,   但客户仍在注册!

只有少数人提到这个问题,我能够在更广泛的互联网上挖掘,没有人有有用的信息。这是上下文:

我有一个应用程序通过CLLocationManager的startUpdatingLocation方法监视设备的位置。它开始监视,运行一段时间,然后在调试输出中弹出此消息。从那时起,不再提供位置更新。

此错误会导致应用程序的位置功能失效,我对可能导致该错误的原因感到茫然。它甚至在最后都有一个感叹号,这意味着它显然是一个令人兴奋的错误。

更新
虽然我从来没有找到问题的解决方案,或者弄清楚为什么它首先发生,但我也失去了重现它的能力。这似乎发生在我做了很多事情的一段时间内,包括代码结构的一般变化,然后更新到iOS 5 beta。似乎有些东西让我沉默了。

7 个答案:

答案 0 :(得分:2)

你实施了吗

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error 

这会抓住它吗?

你需要检查正常运行中的kCLErrorNetwork,kCLErrorDenied,kCLErrorHeadingFailure和kCLErrorLocationUnknown,但我想知道代理人是否仍然可以捕获其他错误?

这可以让您有机会停止然后重新启动位置服务。

答案 1 :(得分:1)

关于@schillace必须分享的内容,您是否有可能在不注意用户授权状态的情况下强制更新位置信息?

尝试暂停致电-startUpdatingLocation,直到您知道[CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized

答案 2 :(得分:0)

我不知道这是不是答案,但是这里有一个提示......我正在使用assetFromURL,而且我从资产库加载图像时出现间歇性故障。所以我写了一些代码来测试一个理论,它可以非常快速地加载库中的每个url。我开始用这段代码看到这个错误。

所以......我的理论是,如果你打电话让位置管理员显示“app想要你的位置”对话框,那么你在对话框启动时继续拨打电话,你会收到这个错误。一旦我确认了对话框并重新运行程序,我就不再看到这个错误了。

希望有所帮助,这只是猜测。

答案 3 :(得分:0)

你确定这是一个问题吗?在我注册到位置管理器完成之前,我认为你正在调试断点(有效地暂停应用程序)。同时,计时器到期,您还没有完成注册。如果您取出断点,消息是否会出现?

答案 4 :(得分:0)

你在主线程上做位置的东西吗?我从后台线程获得了CLLocation API调用的各种奇怪问题。我将几个关键的设置调用移动到主线程中,然后一切正常。

答案 5 :(得分:0)

我得到了同样的错误并且发现它是因为我忘了提到该类在.h文件中实现了CLLocationManagerDelegate。

将CLLocationManagerDelegate添加到头文件中,以下指向代理的行为我解决了错误。

locationManager.delegate = self;
[locationManager startUpdatingHeading];

答案 6 :(得分:0)

我在LocateMe中实现超时(延迟后执行选择器)时得到了这个,我之前的代码使用了另一种方法。我不知道这是否是一个线索。