在Objective-C中用下划线加前缀变量名是什么意思?

Jus*_*ers 2 cocoa naming conventions objective-c ios

我注意到在许多社区Objective-C类和Apple的框架中,他们使用带有下划线的变量前缀的约定来命名一些变量,例如:_name.拥有下划线的原因是什么?我应该在自己的课堂上这样做吗?如果是的话我应该何时何地使用它?

Pot*_*ter 8

这就是所谓的丑化.关键是你永远不会使用它,所以没有变量名或#define你创建的可能会干扰Apple的代码.

具有讽刺意味的是,许多人使用这样的名称创建标题保护,因为他们看到系统标题执行它.

来自C99 7.1.3"保留标识符":

所有以下划线开头的标识符以及大写字母或另一个下划线始终保留用于任何用途.

(它们意味着为系统库保留.)

注意:我不确定C99和Apple ObjC之间的确切关系,但您可能也有适用于整个C语言系列的命名约定.特别是ObjC++需要有效的C++名称,这些名称在任何地方都有额外的双重下划线要求.