Objc 内存管理小结

本章接受了cocoa的内存挂你方法:retain、release和autorelease。

每个对象都维护一个保留计数器。对象被创建时,其保留计数器值1;对象被保留时,保留计数器值加1;对象被释放时,保留计数器值减1;当保留计数器值归0时,对象被销毁。在销毁对象时,首先调用对象的dealloc方法,然后回收其占用的内存以供其它对象使用。

当对象接收一条autorealse消息时,其保留计数器并不立即改变。相反,该对象只被放入NSAutoreleasePool中。当自动释放池被销毁时,会向池中的所有对象发送release消息,所有被自动释放的对象都将其保留计数器值减1。如果保留计数器值归0,则对象被销毁。当使用AppKit时,Objective-C会在适当的时间为你创建和销毁自动释放池,例如在当前用户事件处理完毕时。除此之外,你要负责创建自己的自动释放池,Foundation库工具的模板包含了这些代码。

Cocoa中关于对象及其保留计数器的3条规则:

如果使用new、alloc或copy操作获得一个对象,则该对象的保留计数器值为1.

如果通过任何其它方法获得一个对象,则假设该对象的保留计数器值为1,而且已经被设置为自动释放。

如果保留了某个对象,则必须保持retain方法和release方法使用的次数相等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值