代码之家  ›  专栏  ›  技术社区  ›  Justin Meiners

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

  •  2
  • Justin Meiners  · 技术社区  · 14 年前

    _name . 有下划线的原因是什么。我应该在自己的课堂上做这个吗?如果是的话,我应该在何时何地使用它?

    3 回复  |  直到 9 年前
        1
  •  4
  •   Dave DeLong    14 年前

    在可可中,这是一种约定,表示某物是私有的,不应在外部使用。然而,这是非正式的惯例,特别是考虑到像这样的措辞 the documentation :

    以\开头的方法名是一个下划线字符,保留给Apple使用。

    然而,该建议特别适用于方法,而不是变量。所以如果你想在变量前面加下划线,那就继续吧。也就是说,如果您使用下划线前缀来表示某些数据的私有性质,那么您可能不应该首先公开它。。。

        2
  •  8
  •   Potatoswatter R. Martinho Fernandes    14 年前

    从未 使用它,所以没有变量名或 #define

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

    所有以下划线和大写字母或另一个下划线开头的标识符始终保留供任何使用。

    (它们的意思是为系统库保留。)

    注意:我不确定C99和Apple ObjC之间的确切关系,但是您也可以在整个C语言家族中使用命名约定。特别地,Objc++将需要有效的C++名称,这在任何地方都有不需要双下划线的附加要求。

        3
  •  2
  •   Alan Morford    14 年前

    按照惯例,永远不要用get启动访问器。setter应该以set开头,但是getter不能以get开头。请阅读KVO和KVC,了解更多有关约定及其优点的信息。

    不过,我确实喜欢枚举命名列表中的下划线。这里的下划线帮助我在5行或更多行中挑选出后缀,所有行都以相同的词干开头。 typedef NSInteger罗盘方向; 枚举{ 指南针向东, 指南针指向西边, };