【发布时间】:2017-09-15 12:49:39
【问题描述】:
我正在使用此代码重新加载导航控制器的根视图控制器。
if let newVC = self?.storyboard?.instantiateViewController(withIdentifier: "MyViewController"), let nc = self?.navigationController {
nc.setViewControllers([newVC], animated: true)
}
但我发现这段代码会导致内存泄漏:使用这段代码没有释放内存。
如何捕捉和解决这个问题?有什么建议吗?
【问题讨论】:
-
你怎么知道有泄漏?什么泄漏?
-
如何释放之前根视图控制器的内存? @Alistra
-
如果没有强引用会自动释放。
-
在那个VC类中写下“deinit{print(self)}”,看看它是否被调用。
-
如果您在调试器中运行应用程序,重现问题,然后点击“调试内存图”,您可以看到哪些对象仍然存在,更重要的是,究竟是什么在维护强烈参考他们。如果您正在泄漏,我怀疑上面的代码不是问题的根源,而是其他一些强引用周期或类似重复计时器的东西,它们保持强引用。见stackoverflow.com/questions/30992338/…
标签: ios swift memory-leaks