ERROR,通用,时间,320195751.128,功能,“空隙 CLClientHandleRegistrationTimerExpiry(__ CFRunLoopTimer * void *)“,注册计时器已过期, 但客户仍在注册!
只有少数人提到这个问题,我能够在更广泛的互联网上挖掘,没有人有有用的信息。这是上下文:
我有一个应用程序通过CLLocationManager的startUpdatingLocation方法监视设备的位置。它开始监视,运行一段时间,然后在调试输出中弹出此消息。从那时起,不再提供位置更新。
此错误会导致应用程序的位置功能失效,我对可能导致该错误的原因感到茫然。它甚至在最后都有一个感叹号,这意味着它显然是一个令人兴奋的错误。
更新
虽然我从来没有找到问题的解决方案,或者弄清楚为什么它首先发生,但我也失去了重现它的能力。这似乎发生在我做了很多事情的一段时间内,包括代码结构的一般变化,然后更新到iOS 5 beta。似乎有些东西让我沉默了。
答案 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中实现超时(延迟后执行选择器)时得到了这个,我之前的代码使用了另一种方法。我不知道这是否是一个线索。