开发者

iPhone - observer / every x seconds

开发者 https://www.devze.com 2022-12-16 11:39 出处:网络
I have an observer like this: [mapView.userLocation addObserver:self forKeyPath:@\"location\" options:0 context:NULL];

I have an observer like this:

[mapView.userLocation addObserver:self forKeyPath:@"location" options:0 context:NULL];

So a method is called if an user changes his geolocation. But I want that the method should also be called every x seconds, because If the user does not move, the location won't change and so the method won't be called. But I have to do some calculations.

How could开发者_运维技巧 I do that?

Thanks a lot in advance & Best Regards.


Use a timer

NSTimer *timer;
timer = [NSTimer timerWithTimeInterval:30 //seconds
                                target:self
                              selector:@selector(myMethodtoRun:)
                              userInfo:nil // send an object if you want
                               repeats:YES];

[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];

Later, if you want to cancel the timer, in the method myMethodToRun, you can invalidate

- (void) myMethodToRun:(NSTimer *)timer {
    …
    if (shouldStopTimer) {
        [timer invalidate];
    }
}


MKMapView does not give you much control over GPS device. I recommend using CLLocationManager, so you can perform updates whenever you want. Then you could use NSTimer @coneybeare has just suggested.

In CLLocationManager you can set distanceFilter, which, I belive, does the same thing as observer in MKMapView.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号