【问题标题】:With and Without Dot Notation?有和没有点符号?
【发布时间】:2010-06-16 15:27:25
【问题描述】:

我正在尝试在不使用点符号的情况下编写以下内容...

[scrollView setMinimumZoomScale: scrollView.bounds.size.width / image.size.width];

是这样吗?

[scrollView setMinimumZoomScale: [scrollView bounds].size.width / [image size].width];

干杯加里。

【问题讨论】:

  • 是的,你可以...但是问题到底是什么?
  • 点符号有什么问题?
  • 这并没有什么问题,我只是更喜欢在可能的情况下使用括号表示法。
  • 点表示法的错误在于它重载了另一段类似的 C 语法,这可能会让人困惑,例如,这是做什么的:scrollView.bounds.size.width = 5.0。如果 NSRect 和它的 size 成员是 Objective-C 对象,它可能会做你所期望的,即[[[scrollView bounds] size] setWidth: 5.0],但它不是,它实际上是[scrollView bounds].size.width = 5.0 希望编译器会警告你你正在丢弃赋值结果。

标签: iphone objective-c cocoa-touch


【解决方案1】:

点符号实际上有一些错误。在 Objective-c 中,它会变得非常丑陋且难以阅读。虽然你会得到不同的意见和激烈的战争(我可能刚刚开始),但我很乐意与你分享我的经验法则。对结构使用点表示法。对其他所有内容使用括号。阅读 Joe Conway(Big Nerd Ranch 的)blog post on the subject

乔的报价:

这是我的信念,经过教学 大约 300 名学生 Objective-C,即 点表示法令人困惑。它阻碍 软件开发的主要目标: 编写可维护的、有效的、 高效、易读且无错误 代码。

回答您的问题,是的!看起来很完美。您正在使用您的点访问 struct

坚持使用点符号。不要让任何人欺负你使用它们。 ;-)

-马特

【讨论】:

  • “我相信,在阅读了大约 300 篇关于 Objective-C 的 StackOverflow 帖子后,点表示法令人困惑。”
  • 谢谢你,Matt,当我开始学习objective-c时(大约6个月前),我意识到了围绕点符号的争议,所以为了简化我的学习,我决定坚持使用原来的括号符号。现在我更喜欢它并一直使用它,我会阅读 Joes 的博客作为参考,非常感谢。
  • 在这种情况下,很容易看到什么对象和什么结构 [scrollView bounds].size.width 如果你使用点表示法,你很容易被引导相信你正在访问所有对象。
  • 对不起,BNR 的人在这个帐户上错了。点表示法让开发人员清楚地区分了属性访问和发送消息。当然有时它们可​​以相同,但通常有些对象具有没有方法的属性。进一步抽象对象如何设置其值是一件好事。
  • @jshier 使用点符号和发送消息总是相同。如果一个对象具有属性,您可以使用标准括号方法访问这些属性。这正是 dot.notation 导致的那种混乱。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-14
  • 2015-10-21
  • 1970-01-01
  • 2013-12-14
  • 1970-01-01
  • 1970-01-01
  • 2019-11-12
相关资源
最近更新 更多