2

等価性をチェックする代わりに変数を割り当てているときに警告を受け取る方法はありますか?比較するのではなく、誤って割り当ててしまったことが何度もありますので、警告を出していただければ幸いです。

コーディングスタイルを次のように変更せずにXcodeが警告する方法はありますか?

if (YES == aVariable) {...}
4

2 に答える 2

9

ほとんどの場合、ステートメント=の代わりにを使用すると、Xcodeはすでに警告を発しています。警告が表示されない場合は、使用しているXcodeのバージョン、プロジェクトの古さ、デフォルトから変更したビルド設定をお知らせください。==if

私のテスト:Xcode 4.5.2で新しいiOSアプリを作成しましたが、ビルド設定は変更しませんでした。application:didFinishLaunchingWithOptions:警告をトリガーするための小さなコードを追加しました。ここにあります:

割り当ての結果を括弧なしの条件として使用する

コンパイラのフラグを設定することで警告を無効にすることができます-Wno-parentheses(しかし、なぜそうしたいのですか?)。割り当ての前後に括弧のセットを追加することで、特定の場合の警告を抑制することができます。

if ((x = 7)) {

デフォルトで警告が表示されない場合が2つあります。まず、メソッドで、次のようinitにに割り当てることができます。self

- (id)init {
    if (self = [super init]) {     // no warning by default
    ...

次に、どのような状況でも、次のnextObjectようにセレクターの結果を割り当てることができます。

while (object = [enumerator nextObject]) {    // no warning by default

このような場合、コンパイラの-Widiomatic-parenthesesフラグを設定することで警告を有効にできます。

于 2012-11-05T07:47:40.200 に答える
1

コンパイラフラグWparenthesesでうまくいくはずです。コンパイルするために、条件付きの割り当てを括弧で囲む必要があります。Clangにはデフォルトでこのフラグが設定されています。

于 2012-11-05T07:47:08.203 に答える