码迷,mamicode.com
首页 > 移动开发 > 详细

【读书笔记】iOS-内存管理

时间:2015-09-14 21:03:51      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:

Cocoa的内存管理:retain,release和autorelease.

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

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

 

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

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

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

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

 

参考资料:《Object-C基础教程》

 

 
 

【读书笔记】iOS-内存管理

标签:

原文地址:http://www.cnblogs.com/yang-guang-girl/p/4808131.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!