这是个人选择的问题。有些人认为,点表示法使消息正在发送(正在调用的方法)变得不清楚,因为它看起来就像 C 样式的结构元素访问。争论的另一面是点符号更容易输入、更容易阅读、更简洁。
作为在引入点表示法(在 Objective-C 2.0 中)之前一直在编写 Objective-C 的人,我可以理解双方的论点,但我自己更喜欢使用点表示法。就是说,我认为对于开始使用 Objective-C 的人来说,理解点符号语法在编译时转换为标准访问器方法调用是很重要的。我认为 Big Nerd Ranch 这本书的作者可能有类似的态度,这也是他们决定在书中使用括号符号的重要原因。
所以简而言之,做你最喜欢的事。两者都是有效的,两者之间的选择本质上是风格问题。无论您选择哪种,请确保您了解两种样式都会生成等效的编译代码。
编辑:我忘了回答关于将点表示法转换为括号语法的问题。你很接近,但你写的是错误的,实际上不会编译。应该是:[[self display] setText:[[[self display] text] stringByAppendingString:digit]]
。如果我写它,我会把它分成两行(好吧,我真的会使用点符号):
NSString *stringWithDigit = [[[self display] text] stringByAppendingString:digit];
[[self display] setText:stringWithDigit];
编辑2:我写这个答案已经3年多了。我只是想指出,这些天来,更多的 Apple 框架类已经将以前的常规方法转换为 @properties(例如-[NSArray count]
),大概是为了更好的 Swift 互操作。这使我比以前更自由地使用点符号。