快速的問題 - 有沒有一種很好的方法來找到==
用於物體而不是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
這將是一個合理的編譯器選項,但我從來沒有見過這樣的,我不能不顧手中的任何宏觀技巧或任何強制錯誤。 –