[英]Strange BAD_ACCESS when printing NSInteger
這是我第一次在這里問問題,所以請不要對我太苛刻:-)。 我有一個奇怪的“訪問錯誤”問題。 在我的一類中,我有一個NSInteger
以及其他一些成員。 我重寫了- (NSString *)description
方法來打印所有類似的值(忽略了不相關的部分):
- (NSString *)description {
return [NSString stringWithFormat:@"Duration:%d", duration];
}
然后我使用NSLog(@"%@", myObject)
打印該文件NSLog(@"%@", myObject)
這給了我EXC_BAD_ACCESS而沒有任何日志消息,而與NSZombieEnabled無關。
%i
和%@
,但未得到任何結果 @property NSInteger duration
分配它。 所以我嘗試在我的init
方法中將持續時間初始化為0,但無濟於事。 我很困惑,我在這里做錯了什么? 你能幫助我嗎?
非常感謝!
編輯:總而言之,這似乎是由32位和64位平台之間的差異引起的,因為在iphone 4上運行時很好,並且僅在模擬器中運行時才有問題。 我嘗試了3種不同的方法-將%d
和%i
與NSInteger變量本身一起使用,使用%qi
和%ld
/ %lx
並且還嘗試使用各種格式說明符將其強制轉換為int
和long
。 每次我都可以在設備上運行,但是要在模擬器中獲得EXC_BAD_ACCESS。
這里唯一的猜測:在您的情況下,NSInteger可能是64位,而%i(以及%d)期望使用32位整數,則可以嘗試%qi或(似乎更好的)強制轉換該值。
當您運行在調試器中的應用, 正是在信號提高嗎? Xcode將向您顯示問題的確切內容和堆棧。
當您確定崩潰發生在stringWithFormat:
方法中時,可能是格式說明符的問題。 Apple的《 字符串編程指南》包含有關如何以安全且獨立於平台的方式處理NSInteger
信息 。
也許您需要合成您的財產?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.