Objective-C でクラスのプロパティとして delegate
を持つ場合に、オーナーシップ属性として weak
を付ける (一部の例外を除く) のは知っていたのだけど、ブロックにも weak
を付けてハマった。Block の場合は weak
ではなく copy
を使うのね。
typedef FooBlock *(^FooBlock)(NSString *input);
@interface FooObject : NSObejct
@property (nonatomic, copy) FooBlock block;
@property (nonatomic, weak) id<FooDelegate> delegate;
...
@end
ただし、書き方は分かったけど、使いこなせてはいない。循環参照が怖いなぁ。
No comments:
Post a Comment