首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个CLLocationManager实例

多个CLLocationManager实例
EN

Stack Overflow用户
提问于 2017-03-09 07:55:03
回答 1查看 3.3K关注 0票数 1

在我的应用程序中,CLLocationManager的多个实例正在运行。

当我将输出到控制台时,会得到以下结果:

代码语言:javascript
复制
<+XX.XXXXXX,+XX.XXXXXX> +/- 5.00m (speed -1.00 mps / course -1.00) @ 3/9/17, 1:05:11 PM India Standard Time
<+XX.XXXXXX,+XX.XXXXXX> +/- 5.00m (speed -1.00 mps / course -1.00) @ 3/9/17, 1:01:18 PM India Standard Time

注意时间戳,此语句按相同的顺序打印。

在前面的一个视图中,我使用CLLocationManager获取用户位置,然后停止它&在这里监视用户的移动。但是,以前的CLLocationManager实例仍然存在于内存中&当我执行startUpdatingLocation()时,当前实例和前一个实例都处于活动状态。

可能会有什么问题?如何防止CLLocationManager实例卡在内存中?

EN

回答 1

Stack Overflow用户

发布于 2017-03-09 08:09:55

针对这些问题,我建议基于CLLocationManager模式使用辛格尔顿

通过检查CLLocationManager-Singleton in-Swift,您可以找到已经完成的操作。

按照这种方法,您应该可以保证同一个CLLocationManager实例将处理这两个操作。

如何防止CLLocationManager实例卡在内存中?

您可能希望将其声明为可选变量:

代码语言:javascript
复制
var locationManager: CLLocationManager?

当您需要使用它时:

代码语言:javascript
复制
// set it up
locationManager = CLLocationManager()
locationManager?.startUpdatingLocation()
locationManager?.delegate = self

当你需要移除它时:

代码语言:javascript
复制
// removing it
locationManager?.stopUpdatingLocation()
locationManager?.delegate = nil
locationManager = nil

希望这能帮上忙。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42689675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档