__block ストレージ タイプの「オブジェクト変数」にアクセスしようとすると、次のようになります。
@interface {
__block float x;
}
ブロック内:
@implementation ... {
...
-(void) func: {
^(...) {
x = 0;
}
}
自分自身への __block 参照を作成して次のように使用しない限り、「保持サイクル」警告が表示されます。
-(void) func: {
__block id s = self;
^(...) {
s->x = 0;
}
}
インターフェイスで変数「__block」を宣言できるのはなぜですか?