【问题标题】:Objective-C: Is it bad practice to use dot notation inside of a message?Objective-C:在消息中使用点表示法是不好的做法吗?
【发布时间】:2013-04-05 05:45:15
【问题描述】:

我找不到类似的问题,所以我决定问它(这可能更适合向程序员提问,如果是这样,我提前道歉)。

将点表示法与消息调用一起使用是不好的做法,如下所示:

[self.view addSubView:otherView];

相对于:

[[self view] addSubView:otherView];

我只是好奇,它看起来有点奇怪,但我看不出有什么问题。我对 Objective-C 还比较陌生,还不熟悉任何值得注意的最佳实践。

【问题讨论】:

  • 不,这是相当标准的做法。

标签: objective-c syntax


【解决方案1】:

这并没有什么问题。这只是一个风格问题。使用您喜欢的任何一个。 (顺便说一下,点符号的优点是,如果您使用点符号调用未声明的属性 getter 或 setter,编译器会抛出错误,因此您可能会摆脱一些奇怪的编译时的运行时错误。)

【讨论】:

  • 谢谢,选择这个是因为早点发现潜在错误的花絮。
【解决方案2】:

这根本不是一个坏习惯。但这只是一个约定

任何你觉得好的都可以使用。

你应该使用什么让你的代码可读。

喜欢:

employee.name.address.city.zip

看起来像:

[employee [name [address [city zip]]]]

即使我在上面犯了错误。所以它是你的可读性。

其实应该是这样的:

[[[[employee name] address] city] zip]

另外,带参数的方法不能用点表示法,需要用括号。

double amount=[self calculateInterestOnPrincipal:10000 rate:5.5 year:6]

【讨论】:

  • 我想你的括号可能是反的,不应该是[[[[employee name] address] city] zip]吗?
  • 如果可读性是一个问题,那么点符号是首选。另外,请注意示例中的语法错误。
  • @izuriel 和 H2CO3,现在怎么样?
【解决方案3】:

简单地说,使用点符号来获取和设置对象的状态。这意味着,您应该对属性对象使用点表示法。正如你所做的一切都很好。 另一方面,括号表示法用于调用对象的行为,如

[self createSubviewWithFrame:_frame];

【讨论】:

    猜你喜欢
    • 2013-05-23
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    相关资源
    最近更新 更多