如果我尝试使用__block存储类型访问“对象变量”:

@interface {
__block float x;
}

在一个块中:
@implementation ... {
...
-(void) func: {
   ^(...) {
      x = 0;
   }
}

除非创建对self的__block引用并按如下方式使用,否则我会收到“保留周期”警告:
-(void) func: {
   __block id s = self;
   ^(...) {
      s->x = 0;
   }
}

为什么可以在接口(interface)中声明变量“__block”?

最佳答案

__block变量存在于存储中,该存储在变量的词法范围与在该变量的词法范围内声明或创建的所有块和块副本之间共享。
see

关于objective-c - 为什么在接口(interface)中允许使用 “__block”关键字?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12916419/

10-10 21:32
查看更多