rma*_*ddy 5 objective-c llvm compiler-warnings ios
快速问题 - 是否有一种很好的方法来找到==对象的用途而不是isEqual:?
全文:
我有一堆像这样的代码:
typedef long DataKey;
DataKey x;
DataKey y;
if (x == y) {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
我现在需要使用longfor 替换DataKey对象.在创建类并进行一堆全局搜索和替换之后,我的代码现在有点像这样:
@interface DataKey : NSObject
DataKey *x;
DataKey *y;
if (x == y) { // uh-oh - this is now bad
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
我是否可以在编译器中启用警告,警告在指针中使用标量运算符?我正在使用Xcode 4.5.2和LLVM 4.1编译器.我找不到一个.
还有其他任何建议来帮助修复所有这些代码吗?这不是一个简单的代码库.有数百个源文件要处理.这是一项重大的重构工作.
编辑:
如果有一个警告就像你在一个if条件而不是比较中使用赋值那样会很棒.您可以获得此警告并使用括号来停止警告.
更新:
根据评论中的建议,我将-Weverything编译器选项添加到测试项目中.当比较两个对象指针时,这没有产生任何期望的结果==.
也许可以实现C++的组合,重载operator==方法,以及在尝试使用该运算符时获得一些编译器警告/错误.我可以发布另一个关注此选项的问题.
我很确定没有这样的警告,因为比较指针是否相等是很常见的,而且并非所有通常都会出错。不幸的是,您最好的选择是通过任何可能以这种方式使用 DataKeys 的地方并搜索 ==。我知道,不太有趣。
| 归档时间: |
|
| 查看次数: |
187 次 |
| 最近记录: |