Ita*_*ber 2 cocoa objective-c automatic-ref-counting
当ARC来到Objective-C时,我尽力阅读Clang项目网站上发布的Objective-C自动参考计数(ARC)指南,以更好地了解它的内容.我在那里发现的(并没有其他地方)提到使用__attribute__声明来表示ARC是否某些代码自动释放其返回值,例如(__attribute__((ns_returns_autoreleased))),或者它是否"消耗"一个参数(__attribute((ns_consumed))等等).
但是,该指南似乎很少说明这些声明所持有的实际必要程度.在运行静态分析器和运行项目本身时,排除它们似乎没有任何区别.这些甚至有所作为吗?用方法标记方法有什么好处__attribute__((objc_method_family(new)))吗?我在ARC上找到的文章都没有提到这些说明者; 也许ARC大师可以说出这些用途.
(就个人而言,我包括所有相关的说明符以防万一,但发现他们使代码混淆和混乱.)
这些属性明确适用于异常情况,例如:
可保留对象指针类型的函数或方法参数可以被标记为已消耗,表示被调用者期望获得+1保留计数的所有权.
返回可保留对象指针类型的函数或方法可以被标记为返回保留值,表示调用者期望获得+1保留计数的所有权.
您通常不会执行这些操作,因此通常不会使用这些属性.没有属性,正常行为--NARC规则,或者可能在ARC下我应该说CAN-是编译器实现和期望的.
使用这些属性有两个原因:
| 归档时间: |
|
| 查看次数: |
1294 次 |
| 最近记录: |