|
|
1
50
我总是用下划线。它明确区分了局部变量和实例变量。它还可以避免在以下情况下出现编译器警告:
编辑 : 在忍受了反对票的压力并阅读了评论之后,让我试着表明我的观点: 苹果公司建议IVAR与其财产同名。苹果还建议属性以小写字母开头。苹果还建议局部变量以小写字母开头。 现在你有了一个问题,因为当你阅读一段代码,看到一个变量正在使用时,你无法根据命名约定判断这个变量是ivar还是局部变量。那太糟糕了。解决方案是对IVAR和局部变量有不同的命名约定。这只是常识。 实现此命名约定的方式无关紧要。如果你真的想,你可以简单地在ivar名称后面加上“\u WOOHAHA”。我不在乎(但也许其他人会在乎)。问题是,知道自己在做什么的人决定使用IVAR的“下划线前缀”。嗯,他们做出了正确的决定,即使他们自己的公司推荐了其他东西。(我所说的开发人员是编写一些主要苹果框架和.NET框架类的人) 归根结底,代码质量比遵守一条愚蠢的规则更重要,因为人们甚至没有遵守这条规则。 关于您显示的代码的另一句话:永远不要使用 保持 关于字符串属性。您应该使用 复制 相反 有关复制/保留属性的详细信息,请参见: |
|
|
2
29
在2012-02-16修订后,苹果公司在“Cocoa编码指南”中明确规定了前缀为_u的实例变量的命名约定及其原因。
斯坦福大学的保罗·赫加蒂(PaulHegarty)在2011年秋季在iTunes U、iPhone应用程序开发CS193p上的演讲也解释了这一传统。 http://itunes.apple.com/itunes-u/ipad-iphone-application-development/id473757255 我知道这个问题很久以前就被问过了,但我自己也有同样的问题,我想分享我的发现。 |
|
3
18
目前建议的Objective-C 2.0实践是将ivar与属性使用相同的名称。您可以选择在@属性声明中分配不同的ivar,但默认情况下,属性的合成访问器将使用与属性相同的名称访问ivar,这表明这是他们希望您遵循的模式。 不管怎样,由于对象仍然必须向自己发送消息才能访问属性,因此很难混淆您是在访问属性还是在直接访问其后备ivar时,尽管使用2.0 dot访问属性确实使其更为可能。IMO.使用标准消息传递语法使意图更加明确。
|
|
|
4
6
苹果为自己的“私有”方法保留以下划线开头的选择器,其中包括属性。但我不认为他们会保留ivar名称。 就我个人而言,我不会使用下划线来开始任何类型的变量名。这是一个不透明的惯例。如果其他人对局部变量使用下划线,而对实例变量不使用下划线,该怎么办?如果在一个定义了同名局部的方法中意外省略了下划线,该怎么办? 最好让你的本地名字与你的ivar名字不同。例如,在setter中,可以使用newName或neWValue。 |
|
|
5
3
这纯粹是一个风格问题。
我不知道哪些示例使用带下划线的ivar样式。苹果官方示例(例如。
CryptoExercise
)不要在IVAR前面加前缀
|
|
|
6
2
我只想指出,使用核心数据的新导航项目 尾随的 默认情况下,下划线并将变量设为私有。
|
|
|
7
1
当在对象上使用valueForKey:on时,运行时的KVC部分需要一个名称或\u name ivar,但它找不到用于检索该变量的消息。看见 http://developer.apple.com/documentation/Cocoa/Conceptual/KeyValueCoding/Concepts/SearchImplementation.html 如果运行时费心搜索\u名称,而apple文档首先提到了\u名称,那么这可能是一个很好的原因。让我们看看一些SDK类:UINavigationBar。这个类在所有IVAR前面都有下划线,UIView也是。。。清单还在继续。好吧,也许新的iOS SDK就是这样,好的ole NS*类不会这样做。。。错误的它们在头文件中也使用下划线。 Apple在私有API消息和IVAR中使用下划线。我不理解为什么他们的示例不推动这种行为,尤其是当运行时费心将这种所谓的“命名约定”硬编码到变量搜索路径中时。看到一些一致性会很好。 请注意,要符合KVC,必须遵循严格的命名方案;上面的链接帮助您遵守这一点,以使用运行时的这一方便功能。 |
|
|
mikko · SwiftUI如何在不同堆栈中实现同一视图的平滑动画 1 年前 |
|
|
routern · 如何组合contextMenu和圆角矩形? 1 年前 |
|
|
DevHome98 · 3D触摸不适用于设备swift 2 年前 |
|
|
dunoiww · 从全屏返回时如何触发onAppear 3 年前 |
|
|
Community wiki · iPhone上ivar的继承问题 3 年前 |
|
|
Community wiki · 查找iOS日历 3 年前 |
|
|
Community wiki · 有效的IPhone编程技术[关闭] 3 年前 |