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,就在哪個線程釋放。