Swift 排查引用循环


------------恢复内容开始------------

一、最近使用RxSwift在多次信号的嵌套中,发现一个对象始终始终无法释放

  开始想通过Memory Graph验证是否没有释放,一直报错,后来确认是Xcode的bug

No reply dictionary received from LeakAgent request

  

 

 

   始终无法确认问题,只能考虑使用一个弱引用的数组来验证了

  

final class WeakBox<A: AnyObject> {
    weak var unbox: A?
    init(_ value: A) {
        unbox = value
    }
}

类定义
private static var debugArray = [WeakBox<ExampleObject>]()

初始化时

 KeyBoardItemsData.debugArray.append(WeakBox(self))
 dump(list: KeyBoardItemsData.debugArray)

打印
    private func dump(list: [WeakBox<KeyBoardItemsData>]) {
        list.forEach { (item) in
            print(item)
        }
    }

 

经过打印

的确存在部分没有释放的对象,但是无法确认引用循环的造成,还需要继续排查


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM