MapBox 导致 Terminated due to memory issue
MapBox causes Terminated due to memory issue
我正在使用 mapbox 在我的应用程序中显示地点的位置。但是我每次遇到这样的问题。当我关闭带有地图内存的视图时,内存仍然很忙。在 5 次中有 4 次打开此视图后,我的应用程序崩溃并显示 "Terminated due to memory issue"。我该如何解决?可能有一些方法可以清除用地图关闭此视图后的内存吗?我正在使用 Swift
此内存泄漏的主要原因是视图控制器可能尚未解除分配。
您可以检查您使用地图框地图的视图控制器是否已正确解除分配。
您可以在视图控制器中使用以下代码来了解当您 dismiss/pop 视图控制器或更改拥有地图的根视图控制器时是否已解除分配。
deinit {
print("Memory to be released soon")
}
解决方案:
如果上面的代码没有被调用,检查是否有任何可能有强引用的委托。您可以通过将其更改为弱引用来修复它,如下所示。
protocol DealCellDelegate: class {
func method()
}
weak var delegate: MyViewControllerDelegate?
查看 https://samwize.com/2016/05/30/finding-retain-cycle-with-instruments/ 中的 "Bonus: View Controller - weak delegate" 部分了解更多信息。
我正在使用 mapbox 在我的应用程序中显示地点的位置。但是我每次遇到这样的问题。当我关闭带有地图内存的视图时,内存仍然很忙。在 5 次中有 4 次打开此视图后,我的应用程序崩溃并显示 "Terminated due to memory issue"。我该如何解决?可能有一些方法可以清除用地图关闭此视图后的内存吗?我正在使用 Swift
此内存泄漏的主要原因是视图控制器可能尚未解除分配。 您可以检查您使用地图框地图的视图控制器是否已正确解除分配。
您可以在视图控制器中使用以下代码来了解当您 dismiss/pop 视图控制器或更改拥有地图的根视图控制器时是否已解除分配。
deinit {
print("Memory to be released soon")
}
解决方案: 如果上面的代码没有被调用,检查是否有任何可能有强引用的委托。您可以通过将其更改为弱引用来修复它,如下所示。
protocol DealCellDelegate: class {
func method()
}
weak var delegate: MyViewControllerDelegate?
查看 https://samwize.com/2016/05/30/finding-retain-cycle-with-instruments/ 中的 "Bonus: View Controller - weak delegate" 部分了解更多信息。