CLLocationManager

时间:2017-03-09 07:55:04

标签: ios swift swift3 cllocationmanager

在我的应用程序中,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实例如何粘在内存中?

1 个答案:

答案 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

希望这会有所帮助。