iOS6 では、CLLocationManager デリゲート メソッド:
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
廃止され、現在は次のものに置き換えられています。
- (void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray *)locations
最後の場所 (最新のもの) を取得するには、配列の最後のオブジェクトを取得します。
- (void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray *)locations{
//[locations lastObject]
}
その方法を使用して、場所の大幅な変化を監視します。
- (void)applicationDidEnterBackground:(UIApplication *)application
{
if ([CLLocationManager significantLocationChangeMonitoringAvailable]) {
[locationManager startMonitoringSignificantLocationChanges];
}
}
- (void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray *)locations{
//[locations lastObject]
}
したがって、アプリケーションがバックグラウンドになると、デバイスの場所の大幅な変更を探し始めますが、通常、場所の変更が検出されたかどうかを検出するのに時間がかかりますよね? アプリケーションがバックグラウンドになり、場所の変更が検出されない場合、locationManager:didUpdateLocations:
デリゲート メソッドはどのように動作しますか?