我正在使用CLLocationManager
和CLLocationManagerDelegate
来查找用户位置坐标。我想确保我先得到我的坐标,然后恢复剩下的代码。
我怎么能锁定我的代码以获得位置坐标然后恢复。
有任何想法或建议吗?
答案 0 :(得分:4)
别。什么用户希望在获取位置修复时冻结的应用程序?这可能需要几分钟,如果您的应用在几秒钟内没有响应,它将被删除。相反,您应该在应用启动后立即打开位置管理器,并等待代理的回调执行下一步。在回调回来之前,用户应该能够进行任何非位置类型的活动,例如查看“关于”屏幕或更改设置。如果您没有其中任何一个并且您真的希望用户在该修复程序进入之前根本无法执行任何操作,请使用UIView覆盖屏幕并放置UIProgressIndicator(无限旋转类型而不是有限条型)在中间有一条消息说它正在等待位置数据。 另请注意,某些用户可能无法授予您的应用位置权限,因此请注意并删除进度指示器,并告诉他们需要更改其设置。
在等待修复时不仅阻塞的另一个原因是,当有电话呼入或用户出于某种原因切换到另一个应用时,您的应用可能会被推到后台。如果您的应用程序在此时陷入严格的循环并且太忙而无法响应进入后台的请求,操作系统将完全终止操作,并且用户必须在应用程序返回时完全重新启动应用程序。所有进展和变化都将丢失。总而言之,不要考虑阻止应用程序的主线程。