过去帮助过我的方法之一是从尝试弄清楚哪些对象实际上正在泄漏开始。点击分配工具(在“泄漏检查”上面的行)。现在尝试按释放的对象数量或使用的内存量进行排序。看看是否有任何对象的计数为0,并且它们应该被清除。查看是否有一种对象类型使用了异常数量的内存。
内存泄漏总是由于开发人员在内存管理方面犯了错误而导致的。 Foundation和UIKit中的某些低级私有API存在一些轻微的内存泄漏。在这些较低的级别上,它们处理更多的手动内存管理,因此很容易犯小错误。您无法真正对此做任何事情,但它们相对较少。
如果您的应用程序运行良好,则可能不需要担心修复这些问题。您要在这里进行一些成本效益分析。如果这不影响性能或稳定性,那么现在修复这些问题的时间投资是否值得提供给您和您的用户的微小好处?
但是值得注意的是,内存泄漏可能会累积,因此,如果用户打开您的应用程序很长时间,则随着时间的推移泄漏的内存量最终将成为问题,如果您继续泄漏更多对象,则应用程序将崩溃并且用户将不得不重新打开。但是,如果您的内存泄漏足够小,以至于除非应用程序已经打开了几个小时,否则这不会成为问题,那么这真的是一个大问题吗?这总是你自己的判断。
ClassA
<->ClassB
和闭包中的[weak self]
等泄漏,但还有什么呢? - JuicyFruitUIViewControllers
都是deinit()
,所以这是我的实际问题:如果释放了UIViewController
,那么内存中还剩下什么?它里面的所有内容不应该都被释放了吗?如果没有 - 它不应该在内存中吗? - JuicyFruit