我正在制作地图应用程序,
我尝试使用[locationManager stopUpdatingLocation];
方法停止位置服务。
似乎它在iOS4.3中运行良好,但在iOS5中,它无效。
请任何人建议我如何在iOS5中停止位置服务?
答案 0 :(得分:13)
有时,即使在stopUpdationLocations
您需要为该集
发布您的位置管理员locationManager = nil;
这应该写在
之后 [locationManager stopUpdatingLocation];
另外,在将其设置为nil之后,请注意不要调用locationManager对象,否则应用程序将崩溃
如果它仍然没有停止位置服务,那么就有解决办法,如果你以后不想使用它,只需使用BOOL变量。
希望这可以帮到你!
答案 1 :(得分:5)
您可以从以下两个链接获得帮助:
链接-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];
。
LINK-2:
why self.locationManager stopUpdatingLocation doesn't stop location update
请参阅以上链接中的jnic答案:
与
startMonitoringSignificantLocationChanges
相反的情况并非如此stopUpdatingLocation
,它是stopMonitoringSignificantLocationChanges
。您可能想要替换
startMonitoringSignificantLocationChanges
startUpdatingLocation
为了更加定期更新,除非 你有一个特定的原因只监测重要的 位置变化。查看CLLocation documentation 有关详细信息。
我已添加链接中的答案,以确保即使将来提供的链接失败,答案仍然有用。