如何让对象在block后台队列中销毁?

请问:“把对象捕获到 block 中,然后扔到后台队列去随便发送个消息以避免编译器警告,就可以让对象在后台线程销毁了。”
我写了个demo,为啥不生效呢?作者的原意是什么呀?

原文链接:https://blog.ibireme.com/2015...

我的代码

  • (void)viewDidLoad {
    [super viewDidLoad];
    [self t93_destory];

}

  • (void)t93_destory {
    NSArray *arr11 = @[@"aaa", @"bbb", @"ccc"];
    NSArray *tmp = arr11;
    arr11 = nil;
    NSLog(@"111__%@_%@", arr11, tmp);
    dispatch_async(dispatch_queue_create("kqykqy", DISPATCH_QUEUE_CONCURRENT), ^{

    NSLog(@"222 _%@_%@_%@",[NSThread currentThread], arr11, tmp);

    [tmp class];

    NSLog(@"333 tmp_%@_%@_%@",[NSThread currentThread], arr11, tmp);

    });

    sleep(2);
    NSLog(@"444_%@_%@_%@",[NSThread currentThread], arr11, tmp);

}

回答

1、测试方式不对
2、作者的原意是指: “当容器类持有大量对象时,其销毁时的资源消耗就非常明显,可以通过一个小 Tip:把对象捕获到 block 中,然后扔到后台队列去随便发送个消息以避免编译器警告,就可以让对象在后台线程销毁了 ”

看关键字:
前提:持有大量对象时,个人理解:对象比较多或是占用资源比较大时
原因:销毁时的资源消耗就非常明显,个人理解: CPU 占用太多,影响性能啦
目的:避免编译器警告

以上是 如何让对象在block后台队列中销毁? 的全部内容, 来源链接: utcz.com/a/34054.html

回到顶部