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