ios - 每15秒更新一次位置

标签 ios objective-c

我正在构建GPS应用程序,并且已经能够成功获取位置更新。但是,这些更新正在快速进行(约1-2秒)。我希望能够每15秒更新一次UILabel。我的代码有什么问题?

附言[self setLabels:manager];只是将UILabels设置为managers属性的值:
manager.location.coordinate.latitudelongitude:manager.location.coordinate.longitude
谢谢!

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
CLLocation* location = [locations lastObject];
NSDate* eventDate = location.timestamp;
NSTimeInterval howRecent = [eventDate timeIntervalSinceNow];

if (abs(howRecent) < 15.0) {
    //SHOULD BE LOOPING INTO HERE EVERY 15 SECONDS. INSTEAD IT IS 1-2 SECONDS
    [self setLabels:manager];
  }
}

最佳答案

创建一个像这样的iVar:

@property (nonatomic, strong) NSDate *lastUpdatedTime;

然后只需检查lastUpdatedTime是否已超过15秒(或第一次为零),并在每次设置标签时更新日期。
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    if( [self.lastUpdatedTime timeIntervalSinceNow] > 15 || self.lastUpdatedTime == nil ){
        [self setLabels:manager];
        self.lastUpdatedTime = [NSDate date];
    }
}

这样,您可以保持GPS更新的假设状态。但只能每15秒更新一次标签。

关于ios - 每15秒更新一次位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22008302/

相关文章:

objective-c - 如何创建 GUI 并以编程方式对 Cocoa 事件使用react?

ios - 应用程序由于未捕获的异常“NSRangeException”而终止

ios - CALayer 位置包含 NaN : [nan 15]

ios - 我尝试根据状态显示数据库

ios - 在 iOS 中使用 Parse Server 获取子对象和父对象的最佳方法

iphone - iOS 如何翻转 View /图像并保持比例

ios - 如何保留 UIView Controller (ARC)

ios - 如果我经常调用 setneedsdisplay,那么调用 drawrect 的频率是多少?这是为什么?

ios - 在 Objective-C 中使用一个方法中定义的变量到另一个方法中

ios - UIRefreshControl 在 Collection View 中不起作用