【问题标题】:ViewController not released from MemoryViewController 未从内存中释放
【发布时间】:2018-11-08 00:36:11
【问题描述】:

我有这个视图层次结构

  • RouterDashboardViewController : RootViewController

  • RootViewController : UIViewController

目前,RouterDashboardViewController 实例位于导航堆栈中。当我重置 NavigationController 的 rootViewController 时,RouerDashboardInstance 仍然存在于内存中,因为我可以检查我的 deinit{} 方法没有被调用。下面是 Instruments 中的堆栈跟踪,但无法检测到我的 RouterDashboard 实例没有被释放的任何原因。我确信会有保留周期使 RouterDashboard 实例仍然存在。还有一件事我不理解这些堆栈跟踪,因为 ViewDidLoad() 方法调用了多次。

【问题讨论】:

  • 显示代码。至少有 viewDidLoad 方法。
  • @CaptainAlina viewDidLoad方法代码很多,你可能看不懂。
  • @CaptainAlina 但我已经让我的代表变弱了
  • 如果您不显示您的代码,人们将无法提供帮助。这取决于你。
  • 别忘了您可以查看内存图以查看哪些对象正在保留它。这可能会给你一个线索。

标签: ios swift memory-leaks automatic-ref-counting retain-cycle


【解决方案1】:

某事对RouterDashboardViewController 有很强的引用。有几件事要检查……

  • 您是否将其分配给变量?

    • 您可能需要将其声明为weak var …
  • 它是另一个类的代表吗?

    • 确保委托属性也是weak vars
  • 它是否使用任何引用它的闭包self

    • 将捕获列表添加到闭包的参数列表([unowned self][weak self]

【讨论】:

  • @Ashley 我尝试了以上所有方法但仍然找不到。
猜你喜欢
  • 2018-12-09
  • 1970-01-01
  • 1970-01-01
  • 2013-07-26
  • 1970-01-01
  • 1970-01-01
  • 2018-09-25
  • 2017-02-01
  • 2010-10-19
相关资源
最近更新 更多