【问题标题】:implementation of a method looking like 2 methods put together [duplicate]一个方法的实现看起来像两个方法放在一起[重复]
【发布时间】:2019-06-06 11:13:37
【问题描述】:

看不懂CODE 1中方法的实现

//CODE 1
@implementation Tom
- (void)alice:(Alice*)alice
  didReceiveData:(Data*)data {
  //...
}
@end

在我看来,我有两种方法:

- (out1)method1:in1
method2:in2{
//...
}

这个语法是什么意思?

文档说每次 Tom 接收数据时都会调用 didReceiveData,并且在这种情况下,Tom 也会收到对 Alice 的引用。 所以我期待像 CODE 2 这样的东西。

//CODE 2
@implementation Tom
- (void)didReceiveData:(Data*)data,(Alice*)alice{
   //...
}
@end

CODE 1 是什么意思?

【问题讨论】:

标签: objective-c


【解决方案1】:

Objective-C 基于 C,因此空格(空格、制表符、换行符)除了用于解析和可读性的语言元素分离之外没有任何意义。因此,您可以在任何可以使用空格的地方使用换行符。

- (void)alice:(Alice*)alice
  didReceiveData:(Data*)data {
  //...
}

也可以写成:

- (void)alice:(Alice*)alice didReceiveData:(Data*)data {
  //...
}

最后一个表单可以让您看到方法名称,即:alice:didReceiveData:

【讨论】:

  • @bluestone 是的,这是正确的。如果您想知道现在有点奇怪的方法调用格式:它来自 Smalltalk 语言,这是 80 年代初期最热门的面向对象语言。
  • 那么alice和data都是输入参数?但是为什么方法名中间要写alice呢?这个方法等价于 - (void)alice:didReceiveData: (Alice*)alice (Data*)data { //...} ,这里我把所有输入参数都放在了方法名后面?
  • 不,正常的 Objective-C(和 Smalltalk)方法格式要求您将输入参数与方法名称混合。并且约定也规定使用驼峰式大小写以帮助提高可读性。
  • 感谢您的所有回复!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 2016-09-11
  • 1970-01-01
  • 2012-06-26
  • 2017-04-01
  • 2021-10-02
相关资源
最近更新 更多