==
簡単な質問 -の代わりに with オブジェクトを使用する良い方法はありisEqual:
ますか?
全文:
次のようなコードがたくさんありました。
typedef long DataKey;
DataKey x;
DataKey y;
if (x == y) {
// do stuff
}
long
for myDataKey
を objectに置き換える必要があります。クラスを作成し、一連のグローバル検索と置換を行った後、私のコードは次のようになります。
@interface DataKey : NSObject
DataKey *x;
DataKey *y;
if (x == y) { // uh-oh - this is now bad
// do stuff
}
ポインターでのスカラー演算子の使用について警告する、コンパイラーで有効にできる警告はありますか? LLVM 4.1 コンパイラで Xcode 4.5.2 を使用しています。私はそれを見つけることができませんでした。
このコードのすべてを修正するのに役立つ他の提案はありますか? これは単純なコード ベースではありません。扱うべきソースファイルは何百もあります。これは主要なリファクタリング作業です。
編集:
if
比較の代わりに条件で代入を使用するときのように、警告があれば素晴らしいでしょう。これに対して警告が表示され、括弧を使用して警告を停止できます。
アップデート:
コメントの提案に基づいて、-Weverything
コンパイラ オプションをテスト プロジェクトに追加しました。これにより、2 つのオブジェクト ポインタを で比較したときに、望ましい結果が得られませんでした==
。
おそらく、C++、operator==
メソッドのオーバーロード、およびその演算子を使用しようとしたときにコンパイラの警告/エラーを取得することの組み合わせを実現できます。このオプションに焦点を当てた別の質問を投稿することがあります。