iOS - 内存管理
iOS 中的内存管理最初是非 ARC(自动引用计数),我们必须保留和释放对象。 现在,它支持 ARC,我们不必保留和释放对象。 Xcode 在编译时自动处理这项工作。
内存管理问题
根据 Apple 文档,内存管理的两个主要问题是 −
释放或覆盖仍在使用的数据。 它会导致内存损坏,并且通常会导致您的应用程序崩溃,或者更糟的是,损坏的用户数据。
不释放不再使用的数据会导致内存泄漏。 如果分配的内存不会被释放,即使它永远不会被再次使用,它被称为内存泄漏。 泄漏会导致您的应用程序使用越来越多的内存,进而可能导致系统性能下降或(在 iOS 中)您的应用程序被终止。
内存管理规则
我们拥有我们创建的对象,我们必须随后在不再需要它们时释放它们。
使用 Retain 获得不是您创建的对象的所有权。 当不需要这些对象时,您也必须释放它们。
不要释放不属于你的对象。
在 ARC 中处理内存
您不需要在 ARC 中使用释放和保留。 因此,当视图控制器被移除时,所有视图控制器的对象都会被释放。 同样,任何对象的子对象在释放时都会被释放。 请注意,如果其他类对某个类的对象具有强引用,则不会释放整个类。 因此,建议对委托使用弱属性。
内存管理工具
我们可以借助 Xcode 工具工具来分析内存的使用情况。 它包括 Activity Monitor、Allocations、Leaks、Zombies 等工具。
分析内存分配的步骤
步骤 1 − 打开现有应用程序。
步骤 2 − 选择产品,然后选择配置文件,如下所示。
步骤 3 − 在如下所示的下一个屏幕中选择 Allocations,然后选择 Profile。
步骤 4 − 我们将看到不同对象的内存分配,如下所示。
步骤 5 − 您可以在视图控制器之间切换,并检查内存是否被正确释放。
步骤 6 − 同样,我们可以使用 Activity Monitor 来代替 Allocations 来查看为应用程序分配的总体内存。
步骤 7 − 这些工具可帮助我们访问内存消耗并定位可能发生泄漏的位置。