【发布时间】:2011-07-10 14:41:24
【问题描述】:
当我查看我的一个类中一些比较晦涩的实现代码时,我有点困惑,我发现了几个看起来像这样的方法定义:
- (void)doSomething; {
// Something...
}
- (void)doSomethingWithSomething:(Something*)aSomething; {
// Something with aSomething...
}
这显然是一个人工制品,将方法声明复制并粘贴到实现块中,然后在提供定义时忽略从声明中删除分号。
混淆源于这些方法定义不仅可以编译,而且可以完美执行。我看到了它们并立即预料到了编译错误,就像你尝试一些 C 疯狂时可能会出现的那样:
void doSomething(); {
/* Something */
}
那么问题就变成了,“那个分号到底有什么作用?”似乎它完全没有做任何事情,在这种情况下,问题就变成了,“为什么编译器允许在该特定位置使用单个随机分号?”没有分号是正常的,一个分号显然也可以,但还有什么是编译错误?
【问题讨论】:
标签: objective-c syntax methods