Objective-C:在命名变量时使用 _(下划线)

标签 objective-c naming-conventions

<分区>

Possible Duplicate:
Prefixing property names with an underscore in Objective C

在我正在阅读的 Objective-C 书中以及在我看到的一些代码中,有时人们会在变量名中添加下划线。

虽然我意识到这是由于既定的惯例,但我想知道:

下划线在变量名之前或之后有什么意义吗? 例如 _name, name and name_ 作为 Objective-C 程序员,如果有的话,下划线对你意味着什么?

最佳答案

这在很大程度上取决于个人风格和防御性编程。但这是我个人使用并且看到人们使用前缀的主要原因。

这是为了让您更清楚地了解您是直接访问 ivar 还是使用 getter/setter。

如果我有:

@property (nonatomic, retain) NSArray *people;

和:

@synthesize people = _people;

这将编译并生成像这样的 getter/setter 声明:

- (void)setPeople:(NSArray *)people;
- (NSArray *)people;

现在直接访问我需要使用的ivar:

_people

要使用 getter/setter,我可以使用点符号或像这样的 getter/setter:

[self people];
// or
self.people; // which compiles to [self people];

// and
[self setPeople:newPeople];
// or
self.people = newPeople; // which compiles to [self setPeople:newPeople];

现在在我的代码中,如果我不小心输入:

people = newPeople; // will not compile

它不会编译,因为我没有使用 getter/setter 并且没有名为 people 的 ivar,它应该是 _people

关于Objective-C:在命名变量时使用 _(下划线),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6886138/

相关文章:

python - 使用原始文件名的部分动态命名导入 Python 的 DataFrame

objective-c - Objective-C 中参数的命名约定

objective-c - 桌面 Cocoa 中的 UIGraphicsGetImageFromCurrentImageContext 对应物?

objective-c - 如何使用 UIScrollView 和 UIPageControl 重新创建 iOS 应用程序切换器

objective-c - NSTimer 和 NSRunLoop

ios - 隐藏单元格中的自定义 UITableviewcell 更新

visual-studio - 如何配置 Resharper 使其 "allows"在方法名称中有下划线?

java - Spring Boot 项目命名约定

Swift:参数标签命名约定?

objective-c - 覆盖粘贴: to format text