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

 

經過打印

的確存在部分沒有釋放的對象,但是無法確認引用循環的造成,還需要繼續排查

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