内存管理 逐渐汇总中

本文将被我用来逐渐汇总内存管理的方方面面,如果我通过阅读文档或者请教别人遇到有什么好的内存管理策略,我会逐步将其加入到本文档中。因此,刚开始的时候,本文档的内容可能看起来会很少,不完整,但是它会在逐渐完善中。文档的很多内容肯定不会是我的原创,毕竟我很多时候是看,听,抄,然后总结,在此向那些给我提供过重大帮助的文档作者或者个人致谢。

 

以下摘自cocoa基本原理指南

对象的所有权策略。这个策略可以概括如下:

  • 如果您通过分配和初始化(比如[[MyClass alloc] init])的方式来创建对象,您就拥有这个对象,需要负责该对象的释放。这个规则在使用NSObject的便利方法new时也同样适用。

  • 如果您拷贝一个对象,您也拥有拷贝得到的对象,需要负责该对象的释放。

  • 如果您保持一个对象,您就部分拥有这个对象,需要在不再使用时释放该对象。

 

反过来,

  • 如果您从其它对象那里接收到一个对象,则您不拥有该对象,也不应该释放它(这个规则有少数的例外,在参考文档中有显式的说明)。

和其它规则一样,这些策略也有一些例外和经常出错的地方:

  • 如果您通过类工厂方法来创建对象(比如NSMutableArray arrayWithCapacity:方法),则可以假定您接收到的对象已经自动被放到自动释放池了。您不应该自行将它释放,如果您需要保持该对象,则应该保持(retain)它。

  • 为了避免循环引用,子对象不能保持它的父对象(父对象是该子对象的创建者,或者将该子对象作为实例变量持有的对象)。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值