zoukankan      html  css  js  c++  java
  • OC中的循环引用

     造成循环引用的原因:

      比如在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来处理。

  • 相关阅读:
    八、分组
    七、select使用
    六、SQL基础应用
    五、修改MySQL密码
    side Effect
    js函数式编程
    React生命周期
    Portals
    git使用技巧
    函数式编程
  • 原文地址:https://www.cnblogs.com/ganjinjin/p/4945600.html
Copyright © 2011-2022 走看看