OC-對象釋放線程管理

ARC模式下,對象會在引用計數器爲0時釋放,當我們想管理其釋放線程時,就在子線程將其引用計數置爲0

class MyMutableArray : NSMutableArray {
    deinit {
        print("deinit \(Thread.current)")
    }
}

class ViewController: UIViewController {
    var marray : MyMutableArray?

    override func viewDidLoad() {
        super.viewDidLoad()
        self.marray = MyMutableArray.init();
        let tmp = self.marray;
        self.marray = MyMutableArray.init()
        //去掉下面代碼則在主線程釋放
        DispatchQueue.global().async {
            tmp?.classForCoder
        }
    }

控制檯輸出爲:

deinit <NSThread: 0x6000039ecac0>{number = 3, name = (null)}

即在哪個線程計數器爲0,就在哪個線程釋放。

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