我读了一本书 - 大书呆子牧场的iOS编程。 它说,不建议点符号,因为它混淆代码。 我同时看斯坦福大学课程的iOS编程,并在其中他使用点符号广泛存在。 你会推荐什么? 我个人瘦括号标记了。
你能解释一下如何隐蔽此代码括号标记?
self.display.text = [self.display.text stringByAppendingString:digit];
按照我的理解应该是:
[[self display] setText]:[[[self display] text] stringByAppendingString:digit];
这是对的吗?
这是个人选择的问题。 还有那些认为圆点符号使它不清楚的消息被发送(方法调用),因为它看起来就像C风格的结构元素访问。 争论的另一面是,点符号是更容易输入,更易于阅读,和更简洁。
正如有人因为引入点符号之前,谁一直在写的Objective-C(在Objective-C 2.0),我能理解上双方的观点,但更喜欢使用点符号自己。 这就是说,我认为要明白点标记语法转换为标准的存取方法进行编译时调用它是用Objective-C的开始重要的人。 我觉得大书呆子牧场本书的作者很可能也有类似的态度,这就是为什么他们决定使用括号记号在书中的重要组成部分。
因此,在短期,你喜欢什么最好的。 两者都是有效的,以及两者之间的选择基本上是一个风格问题。 无论您选择哪一种,一定要明白,这两种风格产生等价的编译代码。
编辑:我忘了回答关于点符号转换为括号的语法问题。 你靠近,但是你写的什么是错的,也不会真正编译。 它应该是: [[self display] setText:[[[self display] text] stringByAppendingString:digit]]
。 如果我写它我想它分成两行(好,真的我会使用点表示):
NSString *stringWithDigit = [[[self display] text] stringByAppendingString:digit];
[[self display] setText:stringWithDigit];
编辑2:因为我写这个答案它已经超过3年。 我只是想指出,这些天,还有很多人苹果框架类有过的事情,以前转换为@properties常规方法(例如-[NSArray count]
)大概是更好的互操作雨燕。 这使我更加宽松的比我以前用点号。
这是我的看法:
你应该总是使用点符号,每当你处理性能。 它不仅是更快地写(self.foo具有更少的字符比[短富]),但更重要的是它使链接的信息更容易理解。 例如:
self.myTextField.text.length
是很容易,理解
[[[self myTextField] text] length]
此外,它使得它不太可能,你会搞乱了标点符号(确保你有括号的正确数量常常是一个痛苦)。
但是,正如其他人都如上所述,最终还是个人的意见。
我知道这是一个老的文章,但我想补充一个更现代的答案。
随着迅速释放,我们最喜欢的语言即将灭亡时,应优先的偏向点符号。 所有iOS框架已经更新了他们的API赞成点号(在头干将宁愿只读属性)。 这使得迅速走向最终的翻译更流畅。
需要明确的是,更喜欢你在哪里暴露getter和/或setter方法实例的属性。 幸运的是Xcode的现代Objective-C的迁移工具会做这个最适合你。