iOS __block和__weak区别

作者: A_rcher34 | 来源:发表于2019-04-10 21:56 被阅读19次
  • __block对象在block中可以被修改、重新赋值

  • __block对象在block中不会被block强引用一次,所以不会出现循环引用问题

  • __block在ARC和MRC下都适用,可以修饰对象,和基本数据类型

  • __weak只能在ARC下使用,只能修饰对象,不能修饰基本数据类型(int)

  • __block对象可以在block中被重新赋值,__weak不可以

再来看一道题:

    NSString *s = @"A";
    __block NSInteger i = 1;
    void (^block)(void) = ^{
        NSLog(@"%@%@", s, @(i));
    };
    s = @"B";
    i = 2;
    block();

正确的输出应该为A2

相关文章

网友评论

    本文标题:iOS __block和__weak区别

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