我最近遇到了一个Apple文档,它显示了一个块的以下属性声明:
@interface XYZObject : NSObject
@property (copy) void (^blockProperty)(void);
@end
Run Code Online (Sandbox Code Playgroud)
此外,本文还指出:
注意:您应该将copy指定为属性属性,因为需要复制块以跟踪其在原始范围之外的捕获状态.在使用自动引用计数时,您不必担心这一点,因为它会自动发生,但属性属性的最佳做法是显示结果行为.有关更多信息,请参阅块编程主题.
我还阅读了建议的块编程主题,但没有找到任何相关的内容.
我仍然很好奇为什么将块属性定义为"复制"是最佳实践.如果您有一个好的答案,请尝试区分ARC和MRC差异(如果有的话).
谢谢