[2012-06-06 21:05:12]
ARC retain cycleと警告されるわけですよ.
Capturing 'self' strongly in this block is likely to lead to a retain cycle
そのときのコードはこんな感じ.ブロックでself参照したり,インスタンス変数参照したりしてると怒られる.
@implementation Hoge -(void)hogeMethod{ hogeHandler = ^(Fuga *fuga){ [self someMethod:fuga]; }; } @end
これ,selfがずっと存在するからhogeHandlerの参照が減らないのね.だから__blockつけてやると,Reference Count使わない指定ができるそうな.
訂正版
@implementation Hoge -(void)hogeMethod{ // ここでselfを別にコピー(こいつはブロック専用だから参照カウントを減らせてGCできる) __block Hoge *blockself = self; hogeHandler = ^(Fuga *fuga){ [blockself someMethod:fuga]; }; } @end
以上.
参考にしたのはここ.
Block Retain Cycles « Borkware Miniblog