gle*_*ers 169 objective-c core-location ios
我的应用程序获取用户的位置,获取坐标,并提供与目的地或来源的距离.所有这些可能的目的地都显示在表格视图中,因此我在填充表格的同时获得用户坐标.唯一的问题是,出现要求用户位置的警报视图然后消失得太快就无法点击它!
有没有办法在应用程序首次加载时手动显示此警报?我尝试在应用加载时获取用户的位置以尝试强制显示警报,但这不起作用.
小智 666
虽然难以追踪,但解决方案非常简单.
通过大量的试验和错误,我发现当您第一次尝试访问应用程序中的任何位置服务时弹出位置访问对话框,如果CLLocationManager对象在之前被释放,则对话框将自行消失(无需任何用户交互)用户响应对话框.
我CLLocationManager在我的viewDidLoad方法中创建了一个实例.由于这是该方法的本地实例,因此该方法在方法完成执行后由ARC释放.实例一释放,对话框就消失了.解决方案相当简单.将CLLocationManager实例从方法级变量更改为类级实例变量.现在CLLocationManager只有在卸载类时才会释放实例.
我也遇到过类似的情况。调试后发现
let locationManager = CLLocationManager()
Run Code Online (Sandbox Code Playgroud)
在方法范围内调用,但应该全局调用。
为什么?
简而言之,locationManager 在方法返回后已被释放。但它不应该被释放,直到用户给予或拒绝许可
相同的症状,不同的原因:不要startUpdatingLocation连续多次调用.
我不小心把事情结构化了,以至于代码无意中startUpdatingLocation连续两次调用,这显然很糟糕.它可能也与队列的选择有关,因为我等待开始更新等待网络请求的结果,但我不需要做任何GCD魔术来修复它...只需要确保我没有重复开始.
希望有人能够从我的痛苦中受益.:)
| 归档时间: |
|
| 查看次数: |
30100 次 |
| 最近记录: |