私は地図アプリケーションに取り組んでいます。
メソッドを使用[locationManager stopUpdatingLocation];
して位置情報サービスを停止しようとしています。
iOS4.3では問題なく動作しているようですが、iOS5では動作しません。
iOS5で位置情報サービスを停止する方法を教えてください。
私は地図アプリケーションに取り組んでいます。
メソッドを使用[locationManager stopUpdatingLocation];
して位置情報サービスを停止しようとしています。
iOS4.3では問題なく動作しているようですが、iOS5では動作しません。
iOS5で位置情報サービスを停止する方法を教えてください。
場合によっては、ロケーションマネージャが後も停止しないことがありstopUpdationLocations
ます。
そのセットについては、ロケーションマネージャーを解放する必要があります。
locationManager = nil;
これは後に書く必要があります:
[locationManager stopUpdatingLocation];
また、locationManagerオブジェクトをnilに設定した後は呼び出さないように注意してください。呼び出さないと、アプリケーションがクラッシュします。
それでも位置情報サービスが停止しない場合は、回避策があります。今後使用したくない場合は、BOOL変数を使用してください。
以下の 2 つのリンクからヘルプが得られる場合があります。
リンク-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 つの位置情報更新を取得することに依存している場合は、これが役立ちます。
編集-1:
また、これが完了したら、locationManager.delegate = nil;
後に[locationManager stopUpdatingLocation];
行を追加できます。
リンク-2:
self.locationManager stopUpdatingLocation が位置情報の更新を停止しない理由
上記のリンクで jnic の回答を参照してください。
startMonitoringSignificantLocationChanges
is not の反対はstopUpdatingLocation
、 it isstopMonitoringSignificantLocationChanges
です。重要な場所の変更のみを監視する特別な理由がない限り、より定期的な更新のためにに置き換えること
startMonitoringSignificantLocationChanges
を お勧めします。startUpdatingLocation
詳細については、CLLocation のドキュメント を参照してください。
提供されたリンクが将来ダウンした場合でも、その回答が役立つことを確認するために、リンクから回答を追加しました。