的NSNumber的intValue给EXC_BAD_ACCESS
我有一个NSNumber传递是通过第三方API,当我打电话的intValue对指数我得到一个EXC_BAD_ACCESS错误:的NSNumber的intValue给EXC_BAD_ACCESS
-(CPFill *) barFillForBarPlot:(CPBarPlot *)barPlot recordIndex:(NSNumber *)index;
{
NSLog(@"bar index %i", index);
int value = [index intValue];
}
我在调试器中得到的输出:
酒吧索引0
条索引1
程序接收到的信号:“EXC_BAD_ACCESS”。
这是怎么回事?
我注意到,第一次调用该方法,指数零但下一次它显然不是...
我怎么能调试吗?!?!它是这样一个微不足道的东西,但我似乎无法修复它!
快速谷歌变成a framework似乎调用此方法与NSUInteger
作为参数。假设这是所讨论的库,则您错误地将该参数输入为NSNumber*
。当你认为你看到nil
为索引,你实际上只是看到索引0.
是的,很好的工作查克,我复制和粘贴我从一个示例实施或核心情节使用的代码,我没有测试(假设它工作) – Mark 2010-07-22 03:11:32
尝试使用%@
进行打印index
,因为index
是一个对象。或者,%d
与[index intValue]
。
-(CPFill *) barFillForBarPlot:(CPBarPlot *)barPlot recordIndex:(NSNumber *)index
{
NSLog(@"bar index %@", index);
//or NSLog(@"bar index %d", [index intValue]);
int value = [index intValue];
}
编辑:顺便说一句,你有你的方式结束一个分号标题
%d – falconcreek 2010-07-22 02:47:52
在方法体之前允许使用分号,可能允许从头进行复制和粘贴。 – Chuck 2010-07-22 03:04:00
啊,不知道。 – Kurbz 2010-07-22 03:06:21
这似乎任何事情是错误的API,或者你使用了错误的方法签名。索引应该是一个原始类型,比如NSInteger?
哼,看起来对我来说是错的东西。你怎么能用NSLog记录对象(@“bar index%i”,index); [index intValue] – vodkhang 2010-07-22 02:39:33