A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hee 中级黑马   /  2014-12-10 22:11  /  1275 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 hee 于 2014-12-14 22:00 编辑

autorelease的底层原理是怎样的?


4 个回复

倒序浏览
就是计数器手动加一减一啊,你是想赚技术分吗
回复 使用道具 举报
原理就是NSAutoreleasePool内部包含一个数组(NSMutableArray),用来保存声明为autorelease的所有对象。如果一个对象声明为autorelease, 系统所做的工作就是把这个对象加入到这个数组中去。当NSAutoreleasePool自身释放的时候,会遍历数组中的所有对象,并且调用 release方法。如果对象的retainCount=0 那么系统会释放这些对象,如果retainCount>0,则会内存泄露。
  在某些情况下,NSAutoreleasePool 调用的销毁方法比较迟,这个时候会占用大量的内存,我们也可以使用内嵌的方式,创建多个NSAutorelease的实例,让占用的资源立马释放掉。

•autorelease的好处
不用再关心对象释放的时间,不用再担心调用其他对象方法是否必须在release方法前调用。
回复 使用道具 举报
hee 中级黑马 2014-12-10 23:18:18
板凳
米匠 发表于 2014-12-10 22:43
就是计数器手动加一减一啊,你是想赚技术分吗

是啊,不然逛论坛干嘛呢,还不如多花点时间看视频呢
回复 使用道具 举报
hee 中级黑马 2014-12-10 23:19:58
报纸
Littlekin 发表于 2014-12-10 23:02
原理就是NSAutoreleasePool内部包含一个数组(NSMutableArray),用来保存声明为autorelease的所有对象。如 ...

学习了。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马