当 ARC 来到 Objective-C 时,我尽力通读了 Clang 项目网站上发布的Objective-C 自动引用计数 (ARC)指南,以便更好地了解它的内容。我在那里发现(并且没有其他地方)提到使用__attribute__
声明向 ARC 表示某些代码是否自动释放其返回值,例如 ( __attribute__((ns_returns_autoreleased))
),或者它是否“使用”参数 (__attribute((ns_consumed))
等等。
然而,该指南似乎对这些声明所具有的实际必要性几乎没有给出任何字眼。排除它们似乎没有什么区别,无论是在运行静态分析器还是在运行项目本身时。这些甚至有影响吗?用 标记方法有什么好处__attribute__((objc_method_family(new)))
吗?我在 ARC 上找到的任何文章都没有提到这些说明符。也许 ARC 大师可以说明它们的用途。
(就个人而言,我包括所有相关的说明符以防万一,但发现它们使代码变得混乱和混乱。)