在单个 ViewController 应用程序中,内存保留周期是不可能的吗? (Swift / IOS)

Are memory retain cycles impossible in a single-ViewController-app? (Swift / IOS)

我记得在 YouTube 上看过斯坦福大学的 CS193P(是的,我是个聪明人)...有一种叫做内存泄漏或 "retain cycle" 的东西——非常糟糕的东西——当你做这样的事情时可能会发生:

解决方案通常似乎是改用 "weak self" 引用。

我有104个这样的异步自。 ViewController 中的参考文献,这就是我有点担心的原因。

然而......这个应用程序是一个单页应用程序......以及所有这些自我。引用指向此主 ViewController(或其永久子视图之一),该主视图始终存在,从未被忽略,也从不 "popped from the stack."

我的应用程序似乎运行良好...而且我没有看到总内存使用量出现问题或其他任何情况...这是否意味着我可以按原样保留我的 (ViewController) 代码在这方面?

感谢帮助!

在以下两种情况下,您可能会后悔没有修复代码:

  • 如果您的应用程序在后台运行时设备内存不足,则可以删除视图控制器及其视图的某些方面。看到这个(诚然很旧,但仍然很有趣)article。这很容易在未来的 iOS 版本中对您的应用产生更显着的影响,或者甚至现在,这取决于您的代码正在做什么。

  • 提前 6 个月,您或您团队中的其他人正在为另一个应用程序借用您的一些代码。您(或他们)可能会被烧毁。最好现在就修复代码。这些修复应该不会导致重大重构,但如果您发现一个会导致重大重构,您始终可以在该行插入一个大的警告注释。