3
- (id)methodThatReturnsSomething
{
    @同期(自己){
        ゼロを返します。
    }
}

Xcode でこれを行うと、「コントロールが非 void 関数の終わりに達しました」という警告が返されます。

そのコードに問題はありますか?

4

3 に答える 3

11

コンパイラのいくつかのバージョンのバグが原因で、コンパイラの他のバージョンまたはそれ以降のバージョンで修正されているため、コンパイラの警告が表示されます。

この場合、はい、本当にコンパイラのバグに出くわしました。

于 2010-06-23T23:27:39.907 に答える
1

投稿されたコードの同期は冗長ですが、それ自体には問題はありません。
@synchronizedブロックは正常に終了するか、例外によって終了します。すでにreturnステートメントが含まれているため、ブロックの後の別のステートメントは必要ありません。

于 2010-06-23T18:39:38.993 に答える
0

コードで何をしたいのかわかりませんが、

- (id)methodThatReturnsSomething
{
    @synchronized(self) {
    }
    return nil;
}

selfコンパイラの警告なしで、同じ効果 (に関連付けられているロックが解放されるまでリターンを延期する) が必要です。

しかし:あなたは何をしたかったのですか?このように a を付ける必要はありません@synchronized

于 2010-06-23T17:59:38.047 に答える