码迷,mamicode.com
首页 > 其他好文 > 详细

OC中的循环引用

时间:2015-11-07 17:41:37      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:

 造成循环引用的原因:

  比如在main函数中创建了两个类的对象A和B,现在引用计数都是1.现在让A和B互相引用(A有一个属性是B对象),属性说明是retain,B有一个属性是A的对象,属性说明是retain),现在两个对象的引用计数都增加1,都变成2.

  现在执行[A release]; [B release]; 此时创建出来得main函数已经释放了自己对对象的持有权,但此时A和B的引用计数都还是1,因为他们互相引用了。

      这时你发现A和B将无法释放,因为想要释放A必须先释放B,在B的的dealloc中再释放A,同理要释放B,必须先释放A,在A的dealloc中释放B,所有这两个对象一直存在内存中而不释放,这就是所谓的循环引用的问题

  要想解决这个问题,一般的方法可以将引用的属性设置为assign,而不是retain来处理。

OC中的循环引用

标签:

原文地址:http://www.cnblogs.com/ganjinjin/p/4945600.html

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