2012-02-29 7 views
2

これら2つは同じですか?なぜあなたはもう一方を使いますか?メソッド実装の最後にセミコロン

-(void)someMethod; { stuff }

-(void)someMethod { stuff }

+0

最初の2つの回答:実際には有効な構文であり、コンパイラとランタイムは不平を言っていません。私はプログラミングに関する本を読んでいて、すべての例は以前に見たことのないセミコロンで実装しています。それゆえの質問。私はそれが奇妙なことを知っている – johnbakers

+0

私は訂正しました。確かに間違っているように見えますが、うまくいけば動作します。私は、それが正しい構文かどうかについて客観的なことについては十分に分かりません。これは広く使われている言語ではないので、コンパイラが実際に受け入れるものには多くのものがあります。 –

+1

それは確かに機能しますが、これは歴史的な人工物だと思います。アップルはそれを奨励していません。 – JeremyP

答えて

1

正解はジョシュキャスウェルからだった:それは構文的に有効です

。ネクスト時代からの言語の変わったアーティファクト。

0

-(void)someMethod;メソッドの宣言であり、-(void)someMethod { stuff }はその実装です。

メソッドの宣言は、クラス外で可視にし、実装をimplementes fils(例:MyClass.m)で記述する必要がある場合は、ヘッダーファイル(例:MyClass.h)で記述する必要があります。

そして私は-(void)someMethod; { stuff }が可能ではないと思います。

+0

コメントを見る私の質問に追加 – johnbakers

+0

それは構文的に有効です。ネクスト時代からの言語の変わったアーティファクト。 –

1

最初のものは間違っています。通常、あなたの.hファイルに次のようなものだろう:

-(void)someMethod; 

をそして、あなたが持っているでしょう.Mファイルに:

-(void)someMethod { stuff } 

おそらく最初のものは、いくつかのカット&ペーストの結果として生まれましたコンパイラはそれを受け入れました。

+0

コメントを見る私の質問に追加 – johnbakers

関連する問題