Objective-C方法定义中分号的意义是什么?

时间:2011-03-07 19:41:08

标签: objective-c syntax methods

当我在其中一个类中查看一些比较模糊的实现代码时,我发现了几个类似的方法定义,我感到有些困惑:

- (void)doSomething; {
    // Something...
}

- (void)doSomethingWithSomething:(Something*)aSomething; {
    // Something with aSomething...
}

这显然是将方法声明复制并粘贴到实现块中,然后忽略在提供定义时从声明中删除分号的工件。

这种混淆源于这些方法定义不仅可以编译,而且还可以完美地执行。我看到它们并立即预料到编译错误,就像你可能会想到的那样,如果你想尝试一些C疯狂的话:

void doSomething(); {
    /* Something */
}

那么问题就变成了,“那个分号甚至做了什么?”看起来它绝对没有任何东西,在这种情况下,问题变成了“为什么编译器允许在该特定位置使用单个随机分号?”没有分号是正常的,一个显然也很好,但更多的是编译错误?

1 个答案:

答案 0 :(得分:5)

它没有做任何事情。当您将方法声明从标题复制/粘贴到实现文件中时,它只是帮助您。您不必删除分号,因此它可以为您节省几次击键。分号是完全可选的。