CLLocationManager没有停止/释放

时间:2011-10-24 20:42:45

标签: iphone objective-c cllocationmanager

我正在使用MKMapView并使用CLLocationManager在最后一个已知位置启动地图,问题是iPhone和位置服务报告我在完成后仍在使用这些服务,这引起了对电池的一些担忧的使用。

所以,请帮我正确发布。

CLLocationManager * MANG = [[CLLocationManager alloc] init];
[MANG startMonitoringSignificantLocationChanges];
if(MANG.location){
   [mapa setCenterCoordinate:MANG.location.coordinate animated:NO];
}
[MANG stopMonitoringSignificantLocationChanges];
[MANG stopUpdatingLocation];
[MANG release];

1 个答案:

答案 0 :(得分:0)

有两种方法可以使用位置服务获取位置:第一种方法,不太准确,但电池更友好;而第二个更准确。

当您宣布[myLocationManager startMonitoringSignificantLocationChanges]每次离开手机信号塔并进入新手机时,iPhone会检查位置。 每当GPS检测到位置变化时(每个可能每1-3米,具体取决于准确度),当您宣布[myLocationManager startUpdatingLocation] iPhone检查位置时。{/ p>

所以问题是,在您的代码中,您试图两次停止声明的位置管理器。只需删除第二个停止指令,您就会得到正确的代码:

CLLocationManager * MANG = [[CLLocationManager alloc] init];
[MANG startMonitoringSignificantLocationChanges];
if(MANG.location){
   [mapa setCenterCoordinate:MANG.location.coordinate animated:NO];
}
[MANG stopMonitoringSignificantLocationChanges];
[MANG release];