快速的问题 - 有没有一种很好的方法来找到==
用于物体而不是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==
方法,并尝试使用该操作符时得到一些编译器警告/错误可以实现。我可能会发布另一个关于这个选项的问题。
好问题。 [检查它是否是一个有效的指针](http://www.cocoawithlove.com/2010/10/testing-if-arbitrary-pointer-is-valid.html),然后将自定义编译器警告添加为'#警告一些文本'。不确定那是你在找什么。 – iDev
@ACB我不知道如何在这里应用该链接的信息。我正在寻找(理想情况下)编译时检查。该链接用于运行时检查。 – rmaddy
这将是一个合理的编译器选项,但我从来没有见过这样的,我不能不顾手中的任何宏观技巧或任何强制错误。 –