什么保留策略应该用作块作为对象属性?

时间:2012-04-25 19:21:22

标签: ios objective-c-blocks

我有以下初始化程序:

- (id) initWithBlock:(void(^)void) block;

在初始化程序中我想将块分配给属性,以便以后执行。

typedef void(^block)(void);
@interface myClass()
@property (X, nonatomic)    block theBlock;
@end

X应该是什么?为什么? (使用ARC)

2 个答案:

答案 0 :(得分:1)

您需要复制一个块。

如果您需要详细信息,请参阅Mike Ash关于该主题的文章。即使您不想要细节,也应该阅读它。

http://www.mikeash.com/pyblog/friday-qa-2009-08-14-practical-blocks.html

答案 1 :(得分:0)

你应该使用副本。未复制的块存在于堆栈中。在堆栈上保留一些东西是毫无意义的。