我何时应该停止更新位置管理器?

mar*_*oko 3 objective-c mapkit cllocationmanager ios

我有一个应用程序拨打电话获取用户的位置:

-(void)getLocation{
    locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self;
    locationManager.distanceFilter = kCLDistanceFilterNone;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    [locationManager startUpdatingLocation];

}
//SET USER LOCATION
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
    self.userLocation = [locations lastObject];
    NSLog(@"location in IntroVC %f, %f", self.userLocation.coordinate.latitude, self.userLocation.coordinate.longitude);
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,因为NSLog无限地吐出一个新的位置,我何时应该停止呼叫该位置?嗯,我想它真的取决于我的应用程序的功能,但这不会导致电池耗尽吗?如果是这样,我应该真正研究停止更新的最佳方法.

Ash*_*ani 10

位置管理器的距离过滤器设置为kCLDistanceFilterNone.这会导致didUpdateLocations方法被称为无限时间.

locationManager.distanceFilter = kCLDistanceFilterNone;
Run Code Online (Sandbox Code Playgroud)

将此行更改为

locationManager.distanceFilter = 10;
Run Code Online (Sandbox Code Playgroud)

然后再试一次.根据需要更改值.

所以现在didUpdateLocation不会被无限次调用.:)

希望这会有所帮助.