block作为成员变量时@property的参数使用strong/weak/copy?

xiaodu 发布于 2014年05月17日
无人欣赏。

如题。当一个类的成员变量为block时,属性应该设置为strong,weak还是copy?为什么?

共4条回复
cheng.seattle 回复于 2014年05月19日

@property (nonatomic, copy, readwrite) void (^randeomBlock) (id response, NSError * error);

xiaodu 回复于 2014年05月20日

1楼 @cheng.seattle 感谢回复。为什么要用copy而不是strong呢?

jokefaker 回复于 2014年05月29日

2楼 @xiaodu block如果用到了self,就会retain self ,如果是strong的话,就造成了循环引用

kingzwt 回复于 2014年09月15日

1楼 @cheng.seattle 使用retain也可以,但是block的retain行为默认是用copy的行为实现的,因为block变量默认是声明为栈变量的,为了能够在block的声明域外使用,所以要把block拷贝(copy)到堆,所以说为了block属性声明和实际的操作一致,最好声明为copy。

登录 或者 注册
相关帖子