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

时间:2012-09-06 18:03:27

标签: objective-c ios core-data

  

可能重复:
  What is this double underscore in Cocoa

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

1 个答案:

答案 0 :(得分:5)

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

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

__block__unsafe_unretained

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

我建议只使用_

来自the accepted answer to“Cocoa中的这个双下划线是什么?”:

  

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

A summary of the ANSI C standard说:

  

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