ios - ViewController 未从内存中释放

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

我有这个 View 层次结构

  • RouterDashboardViewController : RootViewController

  • RootViewController : UIViewController

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

最佳答案

某些内容对 RouterDashboardViewController 有很强的引用。有几件事需要检查...

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

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

    • 确保委托(delegate)属性也是弱变量
  • 它是否使用任何引用它的闭包self

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

关于ios - ViewController 未从内存中释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50582934/

相关文章:

ios - 在swift中删除元素时索引超出范围数组错误

ios - Swift UIPickerView 标签错误

ios - 获取选中标记的行并发送到控制台

swift - Firebase 快照不显示数据

ios - 在 UNNotification 我得到的 userInfo 值与 UNNotificationRequest Swift 中的设置值不同

ios - 如何快速在 CSPageMenuOption 中添加菜单选项的侧面和上边框

delphi - 如何正确处理字符串数组以防止内存泄漏?

ios - ViewModel 完成操作时在 ViewController 中的通知

Java NIO 导致文件描述符泄漏

java - 在 Java 8 中创建内存泄漏