我正在启动一个带有视图的计时器确实加载了
- (void)viewDidLoad
{
[超级 viewDidLoad];
locationManager.delegate = self;
[NSTimer scheduledTimerWithTimeInterval: 10.0 //这里的interval必须是float
target: 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] 进入位置管理器
2012-07-31 13:02:28.095 round5[1713:f803] 更新时间:0.000000
2012-07-31 13:02: 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:44.086 round5[1713:f803] 更新时间:15.986345
2012-07-31 13:02:44.087 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] 进入位置管理器
2012-07-31 13:03:13.298 round5[1713:f803] 更新时间:9.202388
2012-07-31 13:03 :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 值的两倍?”
多谢!