在我的应用程序中,CLLocationManager的多个实例正在运行。
当我将输出到控制台时,会得到以下结果:
<+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实例卡在内存中?
发布于 2017-03-09 08:09:55
针对这些问题,我建议基于CLLocationManager模式使用辛格尔顿。
通过检查CLLocationManager-Singleton in-Swift,您可以找到已经完成的操作。
按照这种方法,您应该可以保证同一个CLLocationManager实例将处理这两个操作。
如何防止CLLocationManager实例卡在内存中?
您可能希望将其声明为可选变量:
var locationManager: CLLocationManager?当您需要使用它时:
// set it up
locationManager = CLLocationManager()
locationManager?.startUpdatingLocation()
locationManager?.delegate = self当你需要移除它时:
// removing it
locationManager?.stopUpdatingLocation()
locationManager?.delegate = nil
locationManager = nil希望这能帮上忙。
https://stackoverflow.com/questions/42689675
复制相似问题