ビューがロードされた状態でタイマーを開始しています
- (void)viewDidLoad
{
[super viewDidLoad];
locationManager.delegate = 自己;
[NSTimerscheduledTimerWithTimeInterval: 10.0 //ここでの間隔は float
ターゲットでなければなりません: self
selector:@selector(onTick:)
userInfo: nil repeats:YES];
}
それから私は私のタイマーメソッドを持っています:
-(void)onTick:(NSTimer *)timer {
[locationManager startUpdatingLocation];
}
次に、デリゲートであるため、ロケーション マネージャーが呼び出されます。
-(void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
NSLog(@"ロケーション マネージャーにした");
NSTimeInterval timePassedSinceLastLocationUpdate = fabs([oldLocation.timestamp timeIntervalSinceNow]);
NSLog(@"更新時刻: %f", timePassedSinceLastLocationUpdate);
NSLog(@"--------------");
//その他のことが起こり
ます [locationManager stopUpdatingLocation];
}
ただし、表示される NSLOG は次のとおりです。
2012-07-31 13:02:28.092 round5[1713:f803] はロケーション マネージャーに
到達しました
28.095 round5[1713:f803] --------------
2012-07-31 13:02:33.298 round5[1713:f803] はロケーション マネージャーに到達しました
2012-07-31 13:02 :33.298 round5[1713:f803] 更新時間: 5.222202
2012-07-31 13:02:33.300 round5[1713:f803] --------------
2012-07-31 13:02 :44.086 round5 [1713:f803] ロケーションマネージャーに
到達
-------------
2012-07-31 13:02:53.297 round5[1713:f803] ロケーションマネージャーに到達しました
2012-07-31 13:02:53.302 round5[1713:f803]更新時間: 9.217123
2012-07-31 13:02:53.303 round5[1713:f803] --------------
2012-07-31 13:03:04.096 round5[1713:f803] がその場所に到達しましたマネージャー
2012-07-31 13:03:04.097 round5[1713:f803] 更新時間: 20.007919
2012-07-31 13:03:04.098 round5[1713:f803] ------------- - 2012-07-31
13:03:13.297 round5[1713:f803] がロケーション マネージャーに
到達
:13.300 round5[1713:f803] --------------
2012-07-31 13:03:24.111 round5[1713:f803] はロケーション マネージャーに到達しました
2012-07-31 13: 03:24.112 round5[1713:f803] 更新時間: 20.012550
2012-07-31 13:03:24.113 round5[1713:f803] --------------
下部に向かって見ることができるように、パターンは正規化され、〜10秒を読み取ります(これは、間隔が設定され、システムクロックと比較されるためです)
そして20...どこから来たのかわかりません。
私の質問は、「なぜ常に 10 秒を読み取らないのか、なぜ NStimer の値が 2 倍になるのか?」ということだと思います。
どうもありがとう!