1

このコードを使用して座標を取得しています:

_locationManager = [[CLLocationManager alloc] init];
_locationManager.desiredAccuracy = kCLLocationAccuracyBest;
_locationManager.delegate = self;
[_locationManager startUpdatingLocation];

そして、私は

- (void)locationManager:(CLLocationManager *)manager
 didUpdateLocations:(NSArray *)locations
{

_currentLocation = [locations lastObject];


//Doing some stuff

//I am using stopUpdatingLocation but this delegate is called a lot of times
[_locationManager stopUpdatingLocation];



 }

didUpdateLocation でコードを複数回実行することを避けたいので、実際には一度座標を取得したいと考えています。どうやってやるの?

4

1 に答える 1

0

これは、ロケーションマネージャが更新を何度も実行し、より正確なロケーション結果を徐々に取得するために発生します。

これを停止する1つの方法は、単にブール値を使用することです。

BOOL _hasUpdatedUserLocation = NO;

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    if (!_hasUpdatedUserLocation) {
        _hasUpdatedUserLocation = YES;
        ... // other code
    }
}

または、デリゲートを強制終了することもできます。

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    [locationManager setDelegate:nil];
    ... // other code
}
于 2013-02-24T23:32:32.623 に答える