OC-对象释放线程管理

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/shengpeng3344/article/details/100020574

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,就在哪个线程释放。

猜你喜欢

转载自blog.csdn.net/shengpeng3344/article/details/100020574