Appleのブロックプログラミングトピックから:ブロックと変数
Objective-Cオブジェクト
ブロックがコピーされると、ブロック内で使用されるオブジェクト変数への強力な参照が作成されます。
オブジェクトがNSObjectから拡張されていない場合はどうなりますか?それは関係がありますか?
例:
@property(nonatomic, copy) FooBlock fooBlock;
次は
-(void)foo:(NSObject<Foo>*)foo
{
self.fooBlock = ^(){
[foo bar];
};
}
とは異なる
-(void)foo:(id<Foo>)foo
{
self.fooBlock = ^(){
[foo bar];
};
}