简介
最初是在iOS内存管理非ARC(自动引用计数),在那里我们有保留和释放对象。现在,它支持ARC,我们并不需要添加保留和释放。其实Xcode在编译时会自动负责工作。
面临的问题
根据苹果说明文档中说到面临的两个主要问题是:
- 释放或覆盖的数据仍然在使用。这将造成内存损坏,通常在应用程序崩溃,或者更糟,损坏的用户数据。
- 不释放不再使用的数据会导致内存泄漏。分配的内存,内存泄漏不会释放,即使它从来没有再次使用。泄漏会导致应用程序的内存使用量日益增加,这反过来又可能会导致系统性能较差或(在iOS),申请被终止。
内存管理规则
- 我们创建自己的对象,我们随后释放他们时,当他们不再需要的时候。
- 保留可以使用,从而获得一个物体的所有权,我们没有创建。必须释放这些对象时,它没有必要的。
- 不要释放我们自己没有拥有的对象。
ARC处理内存
不需要使用ARC的释放和保留。因此,所有的视图控制器的对象时,将会释放视图控制器被删除。同样,任何对象的子对象将被释放,当他们被释放。请记住,如果其他类一个类的对象具有很强的借鉴意义,那么整个类将不会被释放。因此建议使用弱属性委托
使用内存管理工具
我们可以分析的Xcode工具仪器的帮助下,及内存的使用情况。它包括的工具,如活动监视器,分配,泄漏,僵尸等
分析内存分配的步骤
1. 打开一个现有的应用程序。
2. 选择产品,配置文件如下所示。
3. 然后选择在下一个画面中的分配如下所示,选择“配置文件”。
4. 我们将看到不同的对象的内存分配,如下图所示。
5. 您可以切换视图控制器,并检查内存是否被正确释放。
6. 同样,我们可以使用活动监视器看到总内存分配给应用程序,而不是分配,并如下图所示。
7. 这些工具可以帮助在知道我们是多么的使用和在什么地方可能发生泄漏。