我有以下初始化程序:
- (id) initWithBlock:(void(^)void) block;
在初始化程序中,我想将块分配给一个属性,以便以后可以执行它。
typedef void(^block)(void);
@interface myClass()
@property (X, nonatomic) block theBlock;
@end
X 应该是什么,为什么?(使用 ARC)
我有以下初始化程序:
- (id) initWithBlock:(void(^)void) block;
在初始化程序中,我想将块分配给一个属性,以便以后可以执行它。
typedef void(^block)(void);
@interface myClass()
@property (X, nonatomic) block theBlock;
@end
X 应该是什么,为什么?(使用 ARC)
您需要复制一个块。
如果您想了解详细信息,请参阅 Mike Ash 关于该主题的文章。即使您不想要详细信息,也应该阅读它。
http://www.mikeash.com/pyblog/friday-qa-2009-08-14-practical-blocks.html
你应该使用副本。尚未复制的块位于堆栈中。在堆栈上保留一些东西是没有意义的。