【发布时间】:2012-12-16 06:27:34
【问题描述】:
可能重复:
How does an underscore in front of a variable in a cocoa objective-c class work?
注意:对于那些四处挖掘试图理解这一点的人,我找出了我困惑的根源。在 .h 中,我有:
...
@interface myClass : parentClass {
className *variableName:
}
@property (strong, nonatomic) className *variableName;
...
这导致 self.variableName 和 _variableName 成为 .m 中的两个不同变量。我需要的是:
...
@interface myClass : parentClass {
className *_variableName:
}
@property (strong, nonatomic) className *variableName;
...
那么,在类'.m中,self.variableName和_variableName是等价的
在带有 ARC 的全新 Xcode 4.5+ 中,针对 iOS 5.0+ 项目,使用 _variableName 与旧式相比,使用 _variableName 是否有明显优势(运行时效率、速度等) @synthesize variableName?
我的理解是 Xcode 4.5+ 将创建一个默认的访问器 _variableName 相当于 self.variableName 并且不使用 @synthesize variableName 的唯一原因是避免 iVar 和传入变量之间的混淆,对吗?
对我来说,仅使用self.variableName 访问 iVar 似乎是最直接和最清楚您要查找的变量的方法。除了输入_ 与self. 之外,使用_variableName 有什么优势吗?
【问题讨论】:
-
这是另一个16:stackoverflow.com/q/5582448 987654323 stackoverflow.com/q/2371489 987654325 stackoverflow.com/q/5659156 987654327 stackoverflow.com/q/6146244 987654329 stackoverflow.com/q/6124109 987654331 stackoverflow.com/q/3521254 987654333 @ 987654334@stackoverflow.com/q/5521499stackoverflow.com/q/5466496stackoverflow.com/q/2114587
-
我的错。我不想搜索拼写的“下划线”。也就是说,抽查了一些潜在的重复,我没有看到任何/新手证明提到如果使用 _variableName 与 self 。变量名。一个 (4088801) 确实提到了一个潜在问题,如果 _variableName 中引用的对象是共享的,并且建议使用 self.variableName 代替。
-
如果您发现在整个问题的众多实例之一中被忽略的特定问题,您当然应该随时详细询问。然而,将这些信息恰好埋在另一个副本中几乎没有价值。