编译的奇怪代码

时间:2012-01-28 16:05:09

标签: objective-c

我在代码中写了这样的东西,奇怪的是它正在工作!

 MKAnnotationView *mapViewIzan = [[MKAnnotationView alloc] 
     initWithAnnotation:annotation 
     reuseIdentifier:reuse];;;;;;

为什么这段代码会编译并运行?你可以看到我添加了“;;;;;”

感谢您的回答。

2 个答案:

答案 0 :(得分:2)

目标C中的所有陈述均以;终止。

do();;

相同
do();

后跟一个空语句,什么都不做,这在Objective C中是完全有效的。

你的;;;;;只是一些无效的空话。

答案 1 :(得分:2)

分号;是C中的有效语句(因此在Objective C中)。该声明不做任何事情 - 它代表一个空操作。

在您的示例中,此声明不是必需的,但有些情况很重要。例如,复制C字符串可以按如下方式完成:

while (*dest++ = *src++);

末尾的分号对于此构造的工作至关重要。