2

我搜索了,但找不到关于此的问题。

我惊讶地发现你可以声明一个返回类型为空的方法:

- ()foo:(int)bar
{
    return @"baz";
}

但是如果您不返回某些内容,编译器会抱怨。没有该行return @"baz",编译器会说"Control reaches end of non-void function"。这段代码(甚至没有括号)似乎是一样的:

- foo:(int)bar
{
    return @"baz";
}

这些方法是如何起作用的?方法体的返回是否暗示了返回类型?我假设有一个没有任何返回类型的方法是一个语法错误。

4

1 回答 1

2

不,只是它被隐含地假定为id. 这就是编译器抱怨的原因。顺便说一句,对于 aguments 也是如此(不指定显式参数类型会导致它被假定为id)。

我在说什么的现场演示。

此外,古老的 Apple 代码也使用这种可怕的符号。

于 2013-04-22T21:34:31.847 回答