Iphone NSNumber intValue赋予EXC\u BAD\u访问权限

Iphone NSNumber intValue赋予EXC\u BAD\u访问权限,iphone,objective-c,exc-bad-access,nsnumber,Iphone,Objective C,Exc Bad Access,Nsnumber,我通过第三方API传递了一个NSNumber,当我调用索引上的intValue时,我得到一个EXC_BAD_访问错误: -(CPFill *) barFillForBarPlot:(CPBarPlot *)barPlot recordIndex:(NSNumber *)index; { NSLog(@"bar index %i", index); int value = [index intValue]; } 我在调试器中得到的输出是: 条形图索引0 条形索引1 程序收到信号

我通过第三方API传递了一个NSNumber,当我调用索引上的intValue时,我得到一个EXC_BAD_访问错误:

-(CPFill *) barFillForBarPlot:(CPBarPlot *)barPlot recordIndex:(NSNumber *)index; 
{
    NSLog(@"bar index %i", index);
    int value = [index intValue];
}
我在调试器中得到的输出是:

条形图索引0

条形索引1

程序收到信号:“EXC\U坏访问”

到底发生了什么事

我注意到,第一次调用该方法时,索引为nil,但下一次显然不是


我怎么能调试这个?!?!这是一件小事,但我似乎无法解决它

尝试使用
%@
打印
索引
,因为
索引
是一个对象。或者,
%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];
}

编辑:顺便说一句,您的方法标题末尾有一个分号

可能是API有问题,或者您使用了错误的方法签名。索引应该是像NSInteger一样的基本类型吗?

出现了一个快速的Google,它似乎用一个
NSUInteger
作为参数来调用这个方法。假设这是有问题的库,您将参数错误地键入为
NSNumber*
。当你认为你看到索引的
nil
时,实际上你看到的只是索引0。

哼哼,对我来说似乎有点不对劲。如何使用NSLog(@“条索引%i”,索引)记录对象;在方法体之前允许使用分号,可能是为了允许从标题复制和粘贴。是的,做得不错,Chuck,我从一个示例实现或核心图中复制并粘贴了我使用的代码,我没有测试它(假设它起作用)