我在iPhone上遇到位置奇怪的问题。它看起来很疯狂,但似乎是可重复的。在我的应用程序中,我使用Core Location来获取某些用户操作的位置数据。通常它似乎工作。但是,在应用程序部署在没有以前版本的设备上(从XCode或通过iTunes无关紧要)之后的第一次运行中,它根本不起作用。 无论
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
也不
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
被调用。我甚至没有获得手机信号塔的坐标。 GPS弹出的唯一标志是要求允许访问位置数据。如果我退出应用程序(并退出,我的意思是真正杀死它,而不是仅仅投入后台),在下一次运行时,一切都会开始正常工作。iPhone位置数据在第一次启动时不起作用
一些更多的细节。 正如我需要在那里用户执行某些动作的位置,我用以下方法:
- 我使用相同的共享
CLLocationManager
对象(kCLLocationAccuracyBest
)和相同的共享委托对象。 - 当用户执行操作时,我打电话
startUpdatingLocation
并创建一个后台线程,基本上是定时器,但还有更多不相关的东西。它每15秒醒来一次 - 我累积的修复程序由
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
- 当后台线程唤醒时,它检查修复和时间。如果有足够的修复,它会停止等待。如果超过1分钟的时间间隔,它也会停止等待。
- “停止等待”=调用某种方法。该方法寻求收到(如果有的话)之间的最佳解决方案并对其进行处理。它也叫
stopUpdatingLocation
我没有看到任何明显的缺陷。而且,同样的二进制文件通常在第二次启动时开始工作。任何想法为什么?我疯了吗?
当您第二次启动应用程序时,是否还有弹出窗口? 如果没有,那么在您的代码中可能会出现某种竞争条件,并由此弹出窗口触发。 – 2011-01-13 14:54:29