0

位置情報サービスを使用するアプリがあります。私のappdelegateで、ロケーションマネージャーのプロパティを初期化しています

if(self.locationManager == nil)
    {
        self.locationManager = [[[CLLocationManager alloc] init] autorelease];  // allocate cllocationmanager property
        self.locationManager.delegate = self;  // confirm the delegate 
        [self.locationManager startUpdatingLocation];  // start updating for location 
    }

そしてロケーション マネージャー デリゲートは dealloc メソッドで nil になります

- (void)dealloc
{
   [_window release];
   [_viewController release];

 // [locationManager release];
   self.locationManager.delegate = nil;
   [super dealloc];
}

位置情報サービスを設定から切り替えると、アプリが 10 回に 1 回クラッシュする

楽器でデバッグした後、これは表示されるエラーです

ここに画像の説明を入力

同じの修正を親切に提案してください。

4

2 に答える 2

0

に伝えていないlocationManager- stopUpdatingLocationApple docs

于 2013-07-20T14:40:03.273 に答える
0

cllocationmanager プロパティと同じ名前のインスタンス変数をまだ作成していない場合は作成し、ここに示すように設定するときにのみ self.locationmanager を呼び出します

   if (nil == locationManager){
        self.locationManager = [[CLLocationManager alloc] init];
        locationManager.desiredAccuracy = kCLLocationAccuracyBest;
        locationManager.delegate = self;
        [locationManager startUpdatingLocation];
        startLocation = nil;
    }

これはarc用に書かれているので、必要に応じてautoreleaseを追加してください。

于 2013-07-20T12:22:37.970 に答える