我在自定義類中重寫- (BOOL) isEqual:(id)object
。__strong或__weak(或其他)參數時覆蓋-isEqual:?
出了4點的選擇,這是__weak
,__strong
,__autoreleasing
,並__unsafe_unretained
,應予使用上的isEqual:
方法簽名的參數?
我在想這是問題所在,因爲當我試圖將我的類的一個實例添加到NSMutableDictionary
時,我在該方法的聲明中得到了一個EXC_BAD_ACCESS(code=2, address=0x10)
。任何方法主體的執行之前
- (BOOL) isEqual:(id __strong)object {
:
換言之,線在該調試器獲取EXC_BAD_ACCESS
是。
Objective-C對象引用類型的任何聲明都隱含地包含__strong,所以我認爲你並不是問題所在。函數簽名應該保持與其覆蓋的函數相同。您很可能會將消息傳遞給已釋放或其指針已損壞的對象。我建議在你的代碼上運行Analyzer並修復發現的任何問題。 – jtomschroeder 2012-07-09 18:34:05
默認情況下對象很強。如果您的訪問不暢,那麼您正在嘗試讀取或寫入一個沒有您認爲其內容的區域。 – Dustin 2012-07-09 18:34:58
你是對的。註釋掉函數體並返回「NO」一致使錯誤消失。謝謝! – ryanrhee 2012-07-09 19:12:31