objective-c - Objective-c 点符号或方括号符号中首选什么?

标签 objective-c notation

我正在读一本书 - Big Nerd Ranch iOS Programming。 它说不建议使用点符号,因为它会混淆代码。 我同时在看斯坦福大学的 iOS 编程类(class),他在类(class)中广泛使用点符号。你会推荐什么?我个人更倾向于括号表示法。

能否请您解释一下如何将这段代码转换为括号表示法?

self.display.text = [self.display.text stringByAppendingString:digit];

据我理解应该是:

[[self display] setText]:[[[self display] text] stringByAppendingString:digit];

是否正确?

最佳答案

这是个人选择的问题。有些人认为点表示法使正在发送的消息(正在调用的方法)变得不清楚,因为它看起来就像 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 互操作性。这使我比以前更自由地使用点符号。

关于objective-c - Objective-c 点符号或方括号符号中首选什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11474284/

相关文章:

javascript - 如何在uiwebview中使用显示nsstring内容?

ios - UIButton正在移动...它不应移动

ip-address - IP 子网表示法

coq - Coq 中保留表示法的多个Where 子句?

c++ - O 表示法中的运行时间代码

python SyntaxError with dict(1=...),但 {1 :. ..} 有效

ios - insertObject :atIndex: object cannot be nil but no array 崩溃

ios - 连接2点drawRect?

objective-c - Obj-C 文字 : Getting "Array subscript is not an integer" on an NSDictionary query

algorithm - 大 O 符号和渐近