0

我有一个 NSNumber 通过第 3 方 API 传递,当我在索引上调用 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”。

到底他妈发生了什么?

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

我该如何调试?!?!这是一件微不足道的事情,但我似乎无法解决它!

4

3 回答 3

6

一个快速的谷歌出现了一个框架,该框架似乎以 anNSUInteger作为参数调用此方法。假设这是有问题的库,您错误地将参数键入为NSNumber*. 当你认为你看到nil了索引时,你实际上只是看到了索引 0。

于 2010-07-22T03:05:30.307 回答
2

看起来 API 有问题,或者您使用了错误的方法签名。索引是否应该是原始类型,例如 NSInteger?

于 2010-07-22T02:46:14.170 回答
1

尝试使用%@用于打印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];
}

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

于 2010-07-22T02:44:32.363 回答