首页 > 其他 > 详细

OC中的循环引用

时间:2015-11-07 17:39:20      阅读:340      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!