0

私は次のクラスを持っています:

#import "SharedData.h"
static int selectedCountryIndex;
static NSMutableArray *imageDataObjectsArray;
@implementation SharedData
+(void)insertIntoImageDataObjectsArray:(ImageData *)imageData:(int)index{
    if (!imageDataObjectsArray)
        **imageDataObjectsArray = [[NSMutableArray alloc]init ];**

    [imageDataObjectsArray insertObject:imageData atIndex:index];
}
+(ImageData *)getFromImageDataObjectsArray:(int)index{
    return [imageDataObjectsArray objectAtIndex:index];
}
+(void)setSelectedCountryIndex:(int)selectedCountryIndexArg{
    selectedCountryIndex = selectedCountryIndexArg;
}
+(int)getSelectedCountryIndex{
    return selectedCountryIndex;
}
@end

このクラスは、1 つのビューからデータを受け取り、別のビューがそのデータを取得できるようにするためのものです。ただし、insertIntoImageDataObjectsArray メソッドが呼び出されるたびに、アスタリスクでマークされた行で「EXC_BAD_ACCESS」クラッシュが発生します。これはそのメソッドへの呼び出しです:

[SharedData insertIntoImageDataObjectsArray:imageDataObject :[result doubleValue]-1]; 

誰でも理由がわかりますか?

4

1 に答える 1

1

クラッシュしているのは次の行だと思います。

[imageDataObjectsArray insertObject:imageData atIndex:index];

また、配列よりも大きいインデックスに挿入しようとしているため、クラッシュしていると思います。

0 => "value1",
1 => "value2"

[imageDataObjectsArray insertObject:@"value3" atIndex:1];成功し、生み出すだろう

0 => "value1",
1 => "value3",
2 => "value2"

その後の呼び出し[imageDataObjectsArray insertObject:@"value4" atIndex:5];は、インデックス 5 > 最大インデックス (2) として失敗します。

または、コメンターが指摘したように、負の数もインデックスとして無効です

于 2012-10-15T16:15:50.643 に答える