在变量(__fetchedResultsController)之前使用两个下划线?

Eri*_*der 1 core-data objective-c ios

可能重复:
Cocoa中的这个双下划线是什么

我已经看到了各种使用两个下划线而不是一个下划线的核心数据代码示例.我知道iVars的优点并使用_variableName ......但是使用两个而不是一个有特定的理由/优势吗?例如__fetchedResultsController = ...

Jos*_*osh 5

没有真正的理由使用双下划线.

我会说我不是他们的粉丝,因为Objective-C中的一些东西使用它们,例如:

__block 要么 __unsafe_unretained

当我看到它时__,我倾向于首先将其视为Apple定义的装饰器.如果有的话,它会增加额外的思考,而单个下划线普遍被理解为一个类'iVar.

我建议只使用_.

接受的回答 "Cocoa的双重下划线是什么?":

C编译器(以及扩展名Objective-C)保留以两个下划线和大写字母开头的名称供编译器供应商使用,为它们提供一个保留的命名空间,用于全局变量和用于实现标准库的函数,或引入新的非- 标准关键字__block.

ANSI C标准的摘要说:

以下划线开头的外部标识符保留用于库使用.