我目前正在委托函数locationManager:didUpdateLocations
中检查设备的速度。在发生的事件我想等待10秒然后再次检查我的设备的速度,但我不希望我的应用程序在这十秒内被暂停我希望我的设备仍然更新其速度所以当我10秒后再次检查其速度,实际上是10秒后的速度。不仅仅是在我开始等待10秒之前的速度。谁知道我应该怎么做呢?
答案 0 :(得分:0)
试试这个:
您的速度正在更新,然后当您在10秒内记录它时,它将采用self.currentLocation
中存储的当前值。
所以在我的情况下,10秒延迟可以点击:
- (void)locationManager:(nonnull CLLocationManager *)manager didUpdateLocations:(nonnull NSArray<CLLocation *> *)locations {
NSLog(@"current speed: %f", locations[0].speed);
CLLocation *location = [locations objectAtIndex:0];
self.currentLocation = location;
}
手势识别器:
UITapGestureRecognizer *logoTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(logoTapped:)];
事件处理程序:
- (void)logoTapped:(id)sender {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(10 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
NSLog(@"SPEED AFTER 10 SECONDS OF WAIT: %f", self.currentLocation.speed);
});
}