快速提问 - 是否有一种很好的方法可以找到==
与对象而不是isEqual:
的用途?
全文:
我有一堆像这样的代码:
typedef long DataKey;
DataKey x;
DataKey y;
if (x == y) {
// do stuff
}
我现在需要使用long
替换我的DataKey
对象。在创建了类并进行了一系列全局搜索和替换之后,我的代码就像这样:
@interface DataKey : NSObject
DataKey *x;
DataKey *y;
if (x == y) { // uh-oh - this is now bad
// do stuff
}
我是否可以在编译器中启用警告,警告在指针中使用标量运算符?我正在使用Xcode 4.5.2和LLVM 4.1编译器。我找不到一个。
有哪些其他建议可以帮助修复所有这些代码?这不是一个简单的代码库。有数百个源文件要处理。这是一项重大的重构工作。
编辑:
如果有一个警告,就像你在if
条件下使用赋值而不是比较时那么会很棒。您可以收到警告并使用括号来停止警告。
更新
根据评论中的建议,我将-Weverything
编译器选项添加到测试项目中。将两个对象指针与==
进行比较时,这并没有产生任何预期的结果。
也许可以实现C ++的组合,重载operator==
方法,并在尝试使用该运算符时获得一些编译器警告/错误。我可以发布另一个关注此选项的问题。
答案 0 :(得分:2)
我很确定没有这样的警告,因为比较指针的相等性是非常常见的,而不是所有通常都是错误的。不幸的是,你最好的选择是通过这个方式使用DataKeys并搜索==。我知道,这不是很有趣。