黑马程序员技术交流社区

标题: autorelease的底层原理是怎样的? [打印本页]

作者: hee    时间: 2014-12-10 22:11
标题: autorelease的底层原理是怎样的?
本帖最后由 hee 于 2014-12-14 22:00 编辑

autorelease的底层原理是怎样的?



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

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

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

学习了。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2