6

__block ストレージ タイプの「オブジェクト変数」にアクセスしようとすると、次のようになります。

@interface {
__block float x;
}

ブロック内:

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

自分自身への __block 参照を作成して次のように使用しない限り、「保持サイクル」警告が表示されます。

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

インターフェイスで変数「__block」を宣言できるのはなぜですか?

4

1 に答える 1