我的应用程序获取用户的位置,获取坐标,并提供到或离开他们的目的地或起点的距离。所有这些可能的目的地都显示在一个表视图中,所以我在填充表的同时获得用户的坐标。唯一的问题是,询问用户位置的警告视图出现后很快就消失了,以至于不可能单击它!
有没有办法在应用程序首次加载时手动显示此警报?我试图在应用程序加载时获取用户的位置,试图强制显示警报,但这不起作用。
发布于 2012-02-28 07:34:18
虽然很难追踪,但解决方案非常简单。
通过反复试验,我发现,虽然当你第一次尝试访问应用程序中的任何位置服务时,位置访问对话框会弹出,但如果在用户响应对话框之前释放CLLocationManager
对象,该对话框就会自动消失(没有任何用户交互)。
我在我的viewDidLoad
方法中创建了一个CLLocationManager
实例。由于这是该方法的本地实例,因此该实例在该方法完成执行后由ARC释放。实例一释放,对话框就消失了。解决方案相当简单。将CLLocationManager
实例从方法级变量更改为类级实例变量。现在,只有在卸载类之后,才会释放CLLocationManager
实例。
发布于 2019-06-23 20:08:14
我也遇到过类似的情况。在调试之后,我发现
let locationManager = CLLocationManager()
在方法范围内调用,但应全局调用。
为什么?
简而言之,locationManager是在方法返回之后发布的。但在用户给予或拒绝许可之前,它不应该被释放
发布于 2011-11-18 00:08:05
我也遇到了同样的问题(至少从症状上看是这样)。在我的例子中,问题出在- (void)applicationWillResignActive:(UIApplication *)application;
方法中,我在这个方法中释放了我的CLLocationManager
实例,作为后台转换准备的一部分。当我删除它并只把它留在- (void)applicationDidEnterBackground:(UIApplication *)application;
中时,这个问题就解决了。
棘手的部分是核心位置警报确实会在应用程序仍在前台时挂起它。
希望对你有帮助,我花了很长时间才找到那个混蛋:)
https://stackoverflow.com/questions/7888896
复制相似问题