ios - 锁定然后解锁代码一段时间

标签 ios mkmapview cllocationmanager nsthread

我正在使用 CLLocationManagerCLLocationManagerDelegate 找出用户位置坐标。我想确保我先得到我的坐标,然后再继续其余的代码。 我怎样才能锁定我的代码以获取位置坐标然后继续。

有什么想法或建议吗?

最佳答案

不要。哪个用户会想要一个在获取位置修复时卡住的应用程序?这可能需要几分钟,如果您的应用在几秒钟内没有响应,它将被删除。相反,您应该在您的应用程序启动后立即打开位置管理器,并等待委托(delegate)的回调来执行下一步。在该回调返回之前,用户应该能够进行任何非位置类型的事件,例如查看“关于”屏幕或更改设置。如果你没有这些,并且你真的希望用户在修复出现之前无法做任何事情,请用 UIView 覆盖屏幕并放置 UIProgressIndicator(无限旋转类型而不是有限条类型)在中间有一条消息说它正在等待位置数据。 另请记住,某些用户可能不会授予您的应用位置权限,因此请注意这一点并删除进度指示器并告诉他们他们需要更改设置。

另一个不只是在等待修复时阻塞的原因是,当有电话进来或用户出于某种原因切换到另一个应用程序时,您的应用程序可能会被推送到后台。如果你的应用程序在那个时候陷入了一个紧循环并且太忙而无法响应进入后台的请求,操作系统将完全终止该操作并且用户在返回时将不得不完全重启应用程序。所有进度和更改都将丢失。所以总而言之,不要考虑阻塞应用的主线程。

关于ios - 锁定然后解锁代码一段时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13225077/

相关文章:

ios - 从 NSArray 中获取最后 10 个对象

ios - CoreTelephony 崩溃(不可重现)

ios - 如何在 MKMapView swift 中添加覆盖路径

iOS 8 Today Widget 显示空白几秒钟

ios - 无法在iOS 11上获取后台位置更新

ios - URLConnection sendSynchronousRequest 问题?

ios - 无法在 iOS 的核心数据中用另一个实体替换一个实体

ios - 在 map View 中始终显示 Pin 并计算经纬度,ios 中的地址

ios - 在 MKMapView 上绘制 CLLocation/CLLocationCoordinate2D

objective-c - App多处调用位置