這是我第一次在這裏問一些東西,所以請不要太苛刻我:-)。我有一個奇怪的「訪問不良」問題。在我的一個類中,我有一個NSInteger
以及其他一些成員。我重寫- (NSString *)description
方法打印一切的價值觀,像這樣(省略unrelevant部分):打印NSInteger時奇怪的BAD_ACCESS
- (NSString *)description {
return [NSString stringWithFormat:@"Duration:%d", duration];
}
,然後我打印使用NSLog(@"%@", myObject)
這是給我EXC_BAD_ACCESS沒有任何日誌消息,無論NSZombieEnabled的。
- 我有雙重檢查所有格式說明符和 參數的順序 - 它是正確的。
- 我試圖改變格式說明
%i
和%@
,當我初始化我的目標,我不初始化 時間沒有得到任何結果 - 。稍後,我通過屬性
@property NSInteger duration
分配它。所以我試圖在我的init
方法初始化的持續時間爲0,但無濟於事。 - 如果我在 之前打印持續時間到NSNumber,它就會起作用。
- 當我刪除持續時間,並保留所有 其他ivars它再次工作。
我很爲難,我究竟做錯了什麼? 你能幫我嗎?
非常感謝!
編輯:概括地說,看來這是32個和64位平臺之間的差異造成的,因爲當在iPhone 4上運行,並在模擬器中運行,只有當有問題,它的罰款。我嘗試了3種不同的方法 - 使用%d
和%i
以及NSInteger變量本身,使用%qi
和使用%ld
/%lx
,我也嘗試使用各種格式說明符轉換爲int
和long
。每次我都可以在設備上運行,但在模擬器中獲得EXC_BAD_ACCESS。
在你的方法設置一個brakpoint和閱讀你的「時間」的價值,我認爲當你在那裏我沒有在NSLog的設置斷點沒有設置... – 2012-03-05 11:46:08
- myObject的是有效的,它有一個有效的持續時間有...謝謝馬可! – Lubo 2012-03-05 11:58:04
請多發一點代碼 – Novarg 2012-03-05 12:01:19