作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我目前正尝试在 CLLocationManager
委托(delegate)调用上实现超时功能。这是代码:
- (void)checkInAt:(UALocation *)location timeout:(NSTimeInterval)timeout {
NSDate *tickDate = [NSDate dateWithTimeIntervalSinceNow:timeout];
self.locationManager = [[CLLocationManager alloc] init];
self.timeout = [[NSTimer alloc] initWithFireDate:tickDate interval:0 target:self selector:@selector(timedOut:) userInfo:nil repeats:NO];
[self.locationManager startUpdatingLocation];
}
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
@synchronized (self.timeout) {
// Todo what if the timer fires right now?
// Is it even feasible? On what thread is CLLocationManager operating?
if (self.timeout.isValid) {
[self.timeout invalidate];
}
else {
// Timed out
return;
}
}
[manager stopUpdatingLocation];
// Do the actual check in
}
- (void)timedOut:(NSTimer *)timer {
@synchronized (timer) {
if (!timer.isValid) {
return;
}
}
}
如果您阅读了代码,您可能已经无意中发现了我的问题。
CLLocationManager
中已经存在)来实现这样的超时? CLLocationManager
在哪个线程上调用其委托(delegate)的方法?最佳答案
您可以简单地在方法中添加断点,然后在 xcode 的左侧您将看到哪个线程。
第一个线程为主线程
关于ios - CLLocationManager didUpdateToLocation :, 在哪个线程上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17022607/
我是一名优秀的程序员,十分优秀!