我正在编写一个使用 CoreLocation 的应用,由于某种原因,位置管理器会随机停止更新位置。
我确保所有对startUpdating
方法的调用都在主线程上(不确定它是否重要)。
我已记录了所有委托方法,包括didAuthorizationStatusChange
,didPauseUpdatingLocation
,didFailWithError
,并且发现没有人被调用。
似乎在4次更新后停止;为什么会这样?
更新:startUpdating
对applicationDidFinish
的调用有效,但稍后在代码中调用该方法会再次停止工作
-(CLLocationManager*) locationManager
{
if(locationManager == nil)
{
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.distanceFilter = kCLDistanceFilterNone;
}
return locationManager;
}
[self.locationManager startMonitoringForRegion:self.venueRegion];
答案 0 :(得分:-1)
一些事情。
你已经编写了一个自定义的单例getter,除了它不是静态的(应该是getter前面的+符号),这似乎是关闭的。获得位置管理员应如下所示:
CLLocationManager * myManager = [MyLocationManager sharedManager];
接下来,如果这是一个“Getter”方法,它应该是:
- (CLLocationManager *)getLocationManager;
否则,当你点击self.locationManager时,你不会通过你的getter并触发你想要在这里点击的必要的getter操作。