📜  iOS-内存管理

📅  最后修改于: 2020-12-08 06:26:43             🧑  作者: Mango


iOS中的内存管理最初是非ARC(自动引用计数),在这里我们必须保留和释放对象。现在,它支持ARC,而我们不必保留和释放对象。 Xcode在编译时自动完成这项工作。

内存管理问题

根据Apple文档,内存管理中的两个主要问题是-

  • 释放或覆盖仍在使用的数据。它会导致内存损坏,通常会导致应用程序崩溃,或者更糟的是,损坏的用户数据。

  • 不释放不再使用的数据会导致内存泄漏。即使不再使用已分配的内存也不会释放它,这称为内存泄漏。泄漏会导致您的应用程序使用越来越多的内存,进而可能导致系统性能下降或(在iOS中)您的应用程序被终止。

内存管理规则

  • 我们拥有我们创建的对象,因此当不再需要它们时,我们必须随后释放它们。

  • 使用保留来获得未创建对象的所有权。当不需要它们时,您也必须释放它们。

  • 不要释放您不拥有的对象。

在ARC中处理内存

您无需使用release并保留在ARC中。因此,删除视图控制器后,将释放所有视图控制器的对象。同样,任何对象的子对象在释放时也将被释放。请注意,如果其他类强烈引用了一个类的对象,则不会释放整个类。因此,建议对代表使用弱属性。

内存管理工具

我们可以借助Xcode工具工具来分析内存的使用情况。它包括诸如活动监视器,分配,泄漏,僵尸等工具。

分析内存分配的步骤

步骤1-打开现有应用程序。

步骤2-选择产品,然后选择配置文件,如下所示。

iOS教程

步骤3-在下面显示的下一个屏幕中选择分配,然后选择配置文件。

iOS教程

步骤4-我们将看到不同对象的内存分配,如下所示。

步骤5-您可以在视图控制器之间切换,并检查内存是否正确释放。

iOS教程

步骤6-类似地,我们可以使用活动监视器来查看为应用程序分配的总内存,而不是分配。

iOS教程

步骤7-这些工具可帮助我们访问内存消耗,并定位可能发生泄漏的位置。