0

重複の可能性:
Objective-C実装ファイルのメソッド名の後のセミコロン

私は両方に気づきました

- (void)encodeWithCoder:(NSCoder *)aCoder;
{

}

- (void)encodeWithCoder:(NSCoder *)aCoder
{

}

動作します。

使用; でもちょっと厄介です。なぜ持っているのか; 作品は私を超えています。C++では動作しません

物事はsomething;と同等でなければならないsomething{};ので、それはちょうど間違っているsomething ;{}と同等でなければなりません。something {};{}

たとえば、if(true)a = b; if(true){a=b}と同じです。

4

3 に答える 3

3

コンパイラはセミコロンを無視します。これは関数名でのみ発生します。これは、人々が関数名を .h(インターフェイス) から .m(実装) ファイルにコピーしようとしたときに発生します。また、目的 c で作業しているときに同じことを観察しました。

于 2013-01-17T12:23:30.503 に答える
2

ブラッド・ラーソンが彼の答えで言っているように ここ

はい、これを行う構文は受け入れられます。

実際、私は常に実装でこれを行っています。なぜなら、メソッド定義をインターフェイスから実装へ、またはその逆にコピー アンド ペーストするのは簡単であり、自分がどこにいるかを覚えておく必要がないからです。同様に、別の行で整列されたブラケットを使用すると役立ちます。

同様に、雄二は次のように述べています

文法的にセミコロンを入れてもOKです。それは何の役にも立ちません。一部のコンパイラは、この余分なセミコロンについて警告を出します。

C/C++/Java は ; を扱います。ステートメントの終わりとして、コンパイラーがそれを見つけるたびに行の終わりとして扱います。

編集:

if(true) a=b;と同じですif(true){a=b};

これらは上記とは比較できません。a=bセミコロンで終了する必要がある式です。したがって、if(true) a=b;正しいです。if(true){a=b;}正しい。しかし、if(true) {a=b};そうではありません。 { と } は、終端されていない式を含むブロックを作成し、セマンティック エラーを発生させるため、コンパイラは ERROR と表示します。

于 2013-01-17T12:13:04.957 に答える
2

はい、

- (void)encodeWithCoder:(NSCoder *)aCoder;
{

}

- (void)encodeWithCoder:(NSCoder *)aCoder
{

}

どちらも同じ意味です。

実際;、関数の後に存在する場合、コンパイラは無視します

書いても

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

}

なので

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
{

}

できます!

于 2013-01-17T12:19:02.307 に答える