2016-05-06 4 views
0

例を使用するときに警告するclangフラグはありますか?ブール式ではなくifステートメントのオブジェクト?条件式でブール式としてオブジェクトを使用している場合に警告します

私はこれについてはGoogleで検索しましたが、何も見つかりませんでした。

NSNumber *n = @(YES) 

if (n) { // should be n.boolValue instead of n 
    ... 
} 

私はXcodeで「暗黙のブール変換」オプションを見つけましたが、それは(私はダブルチェックする)ことではないようです。これは、エディタを使用すると、コアデータのクラスを生成する場合は特に、このようなミスを防ぐのに役立つでしょう。

答えて

0

いいえ、このためのショートハンドがありません。

A.

ifないboolean型が存在しない古典的なCで古典的なCから来ます。 (彼らは99でCを拡張しましたが、ifには触れませんでした。)基本的にすべて!= 0、すべて== 0は偽です。 B.

n

は問いません。これはオブジェクト参照です。オブジェクト参照がnilを指しているかどうかをチェックする必要があるという表現が必要です。あなたの提案では、「オブジェクトなし」と「NOを含むオブジェクト」の間に違いはありません。

+0

私は、上記のようなエラーが捕捉されるように、必要に応じて "boolValue"の使用を強制したいが、暗黙的に@(NO)をNOに変換するのではない。 – iosdude

+0

'if(!オブジェクト)'のコードを 'if(object!= nil)'に変換する必要があることを意味するならば、それは駄目ですが、私は省略形を使用しません。 – iosdude

+0

1.「適切なところ」はどのような条件の下にあるのですか? 2.コンパイラは、参照のテストを意味するのか、参照の対象となるオブジェクトに対するメッセージ 'booleanValue'の結果のテストかを、どのように知ることができますか? 3.あなたの場合はどういう意味ですか?ソースコードだけを見ると(あなたの説明はありません)、私はそれを言うことはできません。コンパイラはできますか? 4. 'object'という表現が$ any条件でブール式になると、' object!= nil'はブール式とオブジェクト参照の比較になります。 –

関連する問題