2011-03-07 9 views
4

私のクラスのいずれかで、より多くの無名の実装コードのいくつかを見て、私はのように見えたいくつかのメソッドの定義見つけたとき、私は少し混乱していた:これは明らかにメソッドをコピーして貼り付けからアーティファクトであるObjective-Cメソッド定義のセミコロンの意味は何ですか?

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

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

を定義を提供するときに宣言からセミコロンを削除することを無視して、実装ブロックに宣言することができます。

この混乱は、これらのメソッド定義がコンパイルされるだけでなく、完全に実行されるという事実に由来します。あなたのようないくつかのC狂気しようとしたら、私は彼らを見て、すぐにあなたが期待するかもしれないもののようなエラーを、コンパイル予想:「?そのセミコロンは何でも何」

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

それでは質問は、となりのそれは絶対に何もしないように思えます。その場合、「コンパイラがその特定の場所で単一のランダムなセミコロンを許可するのはなぜですか?セミコロンは正常ではありませんが、1つは明らかにうまくありますが、それ以上はコンパイルエラーです。

答えて

5

何もしません。メソッド宣言をヘッダーから実装ファイルにコピー/ペーストするときに役立ちます。セミコロンを削除する必要はありませんので、いくつかのキーストロークを保存します。セミコロンは完全にオプションです。

+1

私はそれが明白な答えだと思う。それはちょうど私のように非常にCのようなものとしてストライクしない。 VB:もちろん、Objective-C:いいえ。ああ、面白いトリビア... –

関連する問題