iOS __block和__weak区别
2019-04-10 本文已影响19人
A_rcher34
-
__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