- (id)methodThatReturnsSomething { @同期(自己){ ゼロを返します。 } }
Xcode でこれを行うと、「コントロールが非 void 関数の終わりに達しました」という警告が返されます。
そのコードに問題はありますか?
- (id)methodThatReturnsSomething { @同期(自己){ ゼロを返します。 } }
Xcode でこれを行うと、「コントロールが非 void 関数の終わりに達しました」という警告が返されます。
そのコードに問題はありますか?
コンパイラのいくつかのバージョンのバグが原因で、コンパイラの他のバージョンまたはそれ以降のバージョンで修正されているため、コンパイラの警告が表示されます。
この場合、はい、本当にコンパイラのバグに出くわしました。
投稿されたコードの同期は冗長ですが、それ自体には問題はありません。
@synchronized
ブロックは正常に終了するか、例外によって終了します。すでにreturn
ステートメントが含まれているため、ブロックの後の別のステートメントは必要ありません。
コードで何をしたいのかわかりませんが、
- (id)methodThatReturnsSomething
{
@synchronized(self) {
}
return nil;
}
self
コンパイラの警告なしで、同じ効果 (に関連付けられているロックが解放されるまでリターンを延期する) が必要です。
しかし:あなたは何をしたかったのですか?このように a を付ける必要はありません@synchronized
。