美文网首页
block 小记

block 小记

作者: 我是小胡胡分胡 | 来源:发表于2018-05-26 18:02 被阅读3次

    block里面为什么要再次转化为强引用持有weak?

    sleep顺序很有关系:

    1、如果调用test1后,异步block立即强引用了weak self,则页面pop后,viewcontroller不会立即释放,而是等待线程block执行完后才释放。

    2、如果进入异步 block,sleep之后再强引用weak self, 页面pop了,就立即释放了。 异步线程执行到读取weakself时,已经是nil了。

    -(void)test1{
        __weak typeof(self) weakSelf = self;
     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
          //  sleep(5);
            __strong typeof(weakSelf)strongSelf = weakSelf;
            sleep(5);
            NSLog(@"%@---%@",strongSelf,strongSelf.string);
            strongSelf.string = @"123";
            [strongSelf foot];
        });
    }
    

    相关文章

      网友评论

          本文标题:block 小记

          本文链接:https://www.haomeiwen.com/subject/rxshjftx.html