0

サードパーティのAPIを介して渡される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」。

一体何が起こっているのですか?

メソッドが最初に呼び出されたとき、インデックスはnilですが、次回は明らかにそうではないことに気づきました...

どうすればこれをデバッグできますか?!?!それはとても些細なことですが、私はそれを修正できないようです!

4

3 に答える 3

6

簡単なグーグルは、引数としてこのメ​​ソッドを呼び出すように見えるフレームワークを見つけます。NSUIntegerこれが問題のライブラリであると仮定すると、引数を誤って。として入力していますNSNumber*。インデックスが表示されていると思う場合nil、実際にはインデックス0が表示されているだけです。

于 2010-07-22T03:05:30.307 に答える
2

APIに問題があるか、間違ったメソッドシグネチャを使用しているように思われます。インデックスはNSIntegerのようなプリミティブ型であると想定されていますか?

于 2010-07-22T02:46:14.170 に答える
1

はオブジェクトなので%@、印刷に使用してみてください。または、。indexindex%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 に答える