2017-01-20

プロパティー属性: delegate は weak, block は copy

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

ただし、書き方は分かったけど、使いこなせてはいない。循環参照が怖いなぁ。

ref

No comments:

Post a Comment