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)
        }
    }

 

经过打印

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章