Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 要等待一段时间,然后再检查CLLocationManager';又是什么速度?_Ios_Xcode_Core Location_Cllocationmanager - Fatal编程技术网

Ios 要等待一段时间,然后再检查CLLocationManager';又是什么速度?

Ios 要等待一段时间,然后再检查CLLocationManager';又是什么速度?,ios,xcode,core-location,cllocationmanager,Ios,Xcode,Core Location,Cllocationmanager,我目前正在委托功能中检查设备的速度locationManager:didUpdateLocations。在发生事件时,我希望等待10秒,然后再次检查设备的速度,但我不希望我的应用程序在这10秒内暂停。我希望我的设备仍在更新速度,因此,当我在10秒后再次检查速度时,实际上是10秒后的速度。不仅仅是在我开始等待10秒之前的速度。有人知道我该怎么做吗?试试这个: 您的速度正在更新,然后当您在10秒内记录时,它将获取存储在self.currentLocation中的当前值 因此,在我的例子中,10秒延

我目前正在委托功能中检查设备的速度
locationManager:didUpdateLocations
。在发生事件时,我希望等待10秒,然后再次检查设备的速度,但我不希望我的应用程序在这10秒内暂停。我希望我的设备仍在更新速度,因此,当我在10秒后再次检查速度时,实际上是10秒后的速度。不仅仅是在我开始等待10秒之前的速度。有人知道我该怎么做吗?

试试这个:

您的速度正在更新,然后当您在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;
}
和事件处理程序:

- (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);
    });
}

我在看你的答案之前发布了这篇文章,我打算删除我的另一个问题,因为我认为它的措辞很糟糕。但是你的线路上写着等待10秒后的速度:33。3100这应该是10秒后设备的速度吗?是的,这是10秒后(在我点击一个按钮后)设备(iPhone)的速度。然后我不得不说它错了。你和我有同样的问题。等待前的当前速度为33.3100,等待10秒后的速度也为33.3100?我怀疑他们是完全一样的,当没有其他两种速度是相同的,在你的整个名单。我认为它不会在你“等待”时更新你的速度,当你从等待中出来时,它只会返回它在再次开始更新之前的速度的最后一个值。除非我不明白它是如何正确工作的在我按下按钮之前的速度是32.2,然后10秒后,当前速度变成33.31,并记录给你(10秒后设备的当前速度)哦,我明白了。我看错了。我现在就试试看它是否能解决我的问题,但我必须尝试一些别的方法,而不是轻触来开始我的等待,因为我正在做的事情不起作用。我将尝试另一个方法调用
- (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);
    });
}