编写OC代码时应该注意的事项:内存管理

1.引用计数的理解

(1)工作原理:retain:递增保留字,release:递减保留字,autorelease:待稍后清理“自动释放池”,在递减保留计数。

(2)引用计数机制通过可以递增递减的计算器来管理内存。对象创建好之后,其保留计数至少为1,若保留计数为正,则对想继续存活不释放。当计数为0时,对象就被销毁了。

(3)在对象生命周期中,其余对象通过引用计数机制来保留和释放对象。保留与释放操作分别会递增和递减保留计数。

2.ARC使用简化引用计数

(1) 使用ARC时必须遵循方法命名规则:alloc,new,copy,mtublecopy这些词语开头的方法名其返回的对象归调用者所有。谁调用的就要负责去释放方法所返回的对象。

(2)ARC会借用OC++对象的析构函数进行清理内存所需的代码。

(3)在dealloc方法中只释放应用并解除监听。

(4)编写“异常安全代码”时留意内存管理问题。

3.以弱引用避免保留环

(1)当出现互相引用的时候容易出现内存泄漏导致内存无法被释放。

(2)通常将属性值设为weak属性来避免出现保留环。

4.以自动释放块降低内存峰值:释放对象两种方式:调用release ,调用autorelease。

(1)将循环对象放入自动释放池中,应用程序在执行循环时的内存峰值就会降低。

(2)合理运用自动释放池,降低应用程序的峰值。

5.用僵尸对象调试内存管理问题

(1)开启方式:将 NSZombieEnabled环境变量设置为YES,即可开启功能。

(2)ARC下returnCount方法废止,而MRC最好不要使用retainCount函数。因为这个函数可能永远都不会返回0,因为此对象可能在保留计数还是1的时候就会被系统回收了,因为系统可能会优化。

猜你喜欢

转载自blog.csdn.net/weixin_42357849/article/details/122132974
今日推荐