【问题标题】:Syntax help, why put '_' before variables?语法帮助,为什么要在变量前加上“_”?
【发布时间】:2012-01-19 13:56:45
【问题描述】:

我一直在学习一些教程,并且经常会看到类似的内容。

在.h

UIButton *_loginButton;

@property (retain) IBOutlet UIButton *loginButton;

然后在 .m 中会是...

@synthesize loginButton = _loginButton;

所以我的问题是在前面加上一个 _ 有什么好处?或者为什么这是常见的做法?最后我也应该这样做吗?

【问题讨论】:

标签: objective-c ios xcode


【解决方案1】:

这是人们有时用来表示私有实例变量或将实例变量与属性分开的约定。您有时会看到带有前导下划线的名称用于私有函数或方法。据我所知,Apple 保留该约定供自己使用,并建议您不要使用它以避免名称冲突。出于这个原因,您有时还会看到带有尾随下划线而不是前导下划线的名称,即foo_ 而不是_foo

【讨论】:

  • +1。我猜苹果“保留”前导下划线与 C 函数几乎相同:前导下划线是为系统提供程序(C 库)保留的,双下划线是为编译器保留的。这就是为什么我个人更喜欢尾随下划线。
【解决方案2】:

因为它是一个局部变量。

有些公司内部要求用_写局部变量

【讨论】:

  • 它不仅适用于公司。有时,特别是对于构造函数,它减少了与传递给函数的变量的命名冲突。这就是为什么我所有的私有变量都被命名为varaiableName_,或者我只是使用属性。
【解决方案3】:

我不知道这是从哪个版本开始的,但我注意到如果您只是要将其表示为属性,则根本不需要实际的变量声明。

// Interface
@property (retain) IBOutlet UIButton *loginButton;

// Implementation
@synthesize loginButton

然后你就可以使用这个属性了:

loginButton = (....)
self.loginButton = (...)
[self setLoginButton:(...)]
etc...

现在,一种或另一种方式是正确的方式真的取决于个人品味。对于这样的事情,它通常属于“保持一致并遵循您(唯一开发人员)或您的公司/团队/团队制定的任何编码标准”类别。

【讨论】:

    猜你喜欢
    • 2019-12-14
    • 2013-04-19
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 2015-07-21
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多