在我的应用程序中,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
来获取用户位置,然后停止它,&amp;在这里监视用户移动。但不知何故,以前的CLLocationManager
实例仍在记忆中。当我startUpdatingLocation()
当前的一个&amp;前一个活跃。
可能是什么问题?阻止CLLocationManager
实例如何粘在内存中?
答案 0 :(得分:-1)
对于这些问题,我建议根据Singleton模式使用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
希望这会有所帮助。