6

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

@interface {
__block float x;
}

在一个块中:

@implementation ... {
...
-(void) func: {
   ^(...) {
      x = 0;
   }
} 

我收到“保留周期”警告,除非我创建一个对 self 的 __block 引用并像这样使用它:

-(void) func: {
   __block id s = self;
   ^(...) {
      s->x = 0;
   }
} 

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

4

1 回答 1

0

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

于 2013-07-08T09:07:27.063 回答