基本上一半的时间委托方法CLLocationManager不工作的所有(iOS 8的时,Xcode 6)
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;
根本没有被调用的时候。但另一半的时间它完美的工作!我发现它通常是在关闭并退出它之后首次启动Xcode时发生的,但之后或之后的一对运行似乎正常运行。我不是100%确定它是否只是一个Xcode问题或者什么,我很快就会得到一个开发者许可证,所以我会看看它是否可以在实际设备上正常工作。
从viewDidAppear开始(在viewDidLoad中也尝试过,没有什么区别),我运行一个方法来初始化我的LocationManager的东西:
locationManager = [[CLLocationManager alloc]init];
[locationManager setDelegate:self];
locationManager.distanceFilter = 20.0f;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.pausesLocationUpdatesAutomatically = NO;
if ([locationManager respondsToSelector:@selector(requestAlwaysAuthorization)])
[locationManager requestAlwaysAuthorization];
[locationManager startUpdatingLocation];
有时候这工作,有时没有。我甚至做了个计时器,每隔几秒钟就重新运行一次,这是行不通的。
有什么我应该做的吗?这个问题有什么答案吗?
谢谢。
位置管理器实际上只是为了在设备上工作。在模拟器中,你有没有尝试设置位置? – Milo 2014-09-28 04:39:26
你的意思是*一半的时间*?当操作系统有位置更新要传递时调用'didUpdateLocations'。有时它会,但其他时候(不太常见)它不会。 – Mike 2014-09-28 04:47:57
几件事情,你有一个'NSLocationAlwaysUsageDescription'添加到你的应用程序info.plist文件?你有两个在模拟器中设置了一个位置? (Debug-> Location) – TyloBedo 2014-09-28 05:18:35