这是我第一次在这里问一些东西,所以请不要对我太苛刻:-)。我有一个奇怪的“访问不良”问题。在我的一个班级里,我有一个NSInteger
和其他一些成员。我重写了- (NSString *)description
方法来打印所有类似的值(省略了不相关的部分):
- (NSString *)description {
return [NSString stringWithFormat:@"Duration:%d", duration];
}
然后我使用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。
答案 0 :(得分:1)
这里唯一的猜测:在你的情况下NSInteger可能是64位而%i(以及%d)需要32位整数,你可以尝试%qi或(看起来更好)显式地转换值。
答案 1 :(得分:0)
当你在调试器中运行应用程序时,提出的信号完全? Xcode将向您显示问题的精确线和堆栈。
当你确定崩溃发生在stringWithFormat:
方法中时,它可能是格式说明符的问题。 Apple String Programming Guide contains information关于如何以安全和平台独立的方式处理NSInteger
。
答案 2 :(得分:-1)
也许你需要综合你的财产?