我正在开发地图应用程序,
我正在尝试使用[locationManager stopUpdatingLocation];
方法来停止位置服务。
它似乎在 iOS4.3 中运行良好,但在 iOS5 中,它不起作用。
请任何人建议我如何在 iOS5 中停止定位服务?
我正在开发地图应用程序,
我正在尝试使用[locationManager stopUpdatingLocation];
方法来停止位置服务。
它似乎在 iOS4.3 中运行良好,但在 iOS5 中,它不起作用。
请任何人建议我如何在 iOS5 中停止定位服务?
有时会发生位置管理器即使在之后也不会停止stopUpdationLocations
。
您需要为该集合释放您的位置管理器:
locationManager = nil;
这应该写在之后:
[locationManager stopUpdatingLocation];
另外,请注意不要在将 locationManager 对象设置为 nil 后调用它,否则您的应用程序将崩溃。
如果它仍然没有停止位置服务,那么有解决方案,如果您以后不想使用它,只需使用 BOOL 变量。
您可以从以下两个链接获得帮助:
链接-1:
请参阅上面链接中的 site_reg 的答案:
我遇到了同样的问题,似乎可以通过在 .m 文件中声明一个静态 BOOL 并在输入 didUpdateToLocation 方法时检查它来解决。
@implementation MyFile
@synthesize MySynth;
static BOOL haveAlreadyReceivedCoordinates = NO;
然后在您的 didUpdateToLocation 方法中:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
if(haveAlreadyReceivedCoordinates) {
return;
}
haveAlreadyReceivedCoordinates = YES;
...
}
从技术上讲,这不会使其停止接收更新,但它将忽略第一个更新之后的任何更新。如果您的应用程序依赖于仅获取一个位置更新来完成其工作,那么这应该会有所帮助。
编辑-1:
同样,一旦完成,您可以在行locationManager.delegate = nil;
后添加[locationManager stopUpdatingLocation];
。
链接-2:
为什么 self.locationManager stopUpdatingLocation 不停止位置更新
请参阅上面链接中 jnic 的答案:
对面的
startMonitoringSignificantLocationChanges
不是stopUpdatingLocation
,是的stopMonitoringSignificantLocationChanges
。您可能希望替换
startMonitoringSignificantLocationChanges
为startUpdatingLocation
以进行更定期的更新,除非您有特定原因仅监视重大位置更改。查看CLLocation 文档 以获取更多详细信息。
我添加了链接中的答案只是为了确保即使提供的链接将来出现故障,该答案也是有用的。