版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
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,就在哪个线程释放。