我将我的对象设置为locationManager的委托,并调用didChangeAuthorizationStatus方法,该方法将执行以下操作:
func locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
if status == CLAuthorizationStatus.AuthorizedWhenInUse {
self.locationManager.startUpdatingLocation()
}
}
我也有这种方法,在此之后再也不会调用它:
func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
if locations.count == 0 {
return
}
//Do stuff
}
有什么想法为什么可能不被称为?我想被释放的对象是一个选项,但是当它到达authorizationStatus方法时,它也会被释放。
这是迟到的答案,但是当我遇到相同的问题(didChangeAuthorizationStatus
被称为但没有didUpdateLocations
)时,我偶然发现了这个问题。好吧,当然这与代码无关,而是我在没有设置位置的模拟器中进行测试。因此,从未找到该位置,从而导致didUpdateLocations
永不被调用。
要在模拟器中解决此问题,请转到Debug -> Location-> <choose location>
。
编辑还应该注意的是,locationManager:didFailWithError:
如果未按预期在模拟器中设置位置,它将运行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句