1

NSArray で EXC_BAD_ACCESS エラーが発生します。他のアレイがあり、それらは正常に機能しています。viewDidLoad で配列を初期化しました。別のブロックからアクセスするたびにエラーが発生します。ただし、この配列はヘッダーファイルで定義されています。ARC がオンになっています。これが私のコードです

ヘッダー ファイル .h

@interface PopoverViewController : UITableViewController 
{ 
    NSArray *typeFilterItem; 
    NSArray *changeFilterItem; 
    NSArray *nFragmentFilterItems; 
}

.m ファイル

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Uncomment the following line to preserve selection between presentations.
    // self.clearsSelectionOnViewWillAppear = NO;

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem;

    // set section
    typeFilterItem = [NSArray arrayWithObjects:@"All",
                      @"Type-1",
                      @"Type-2",
                      @"Type-3", nil];
    changeFilterItem = [NSArray arrayWithObjects:@"All",
                        @"Static Change",
                        @"Consistent Change",
                        @"Inconsistent Change", nil];


    nFragmentFilterItems = [NSArray arrayWithObjects:@"Min",
                            @"Max", nil]; // this is the array causing problem
    NSLog(@"count: %d", nFragmentFilterItems.count); // here its ok
    // set filters
    [self setAllTypeFilers];
    [self setAllChangePatternFilters];

}

uitable データソースで

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.

    /******* getting error at this line *****/
    NSLog(@"count: %d", nFragmentFilterItems.count);
    if (section == 0) {
        return typeFilterItem.count;
    } else if (section == 1) {
        return changeFilterItem.count;
    } else if (section == 2) {
        return 2;
    } else if (section == 3) {
        return 1;
    }
    return 0;
}

前もって感謝します

4

2 に答える 2

1

これを試してください

nFragmentFilterItems = [[NSArray arrayWithObjects:@"Min",
                            @"Max", nil] retain];

Tks

于 2012-11-14T13:57:03.247 に答える
1

ヘッダーファイルに次のものがある場合:

@property(nonatomic, strong)NSArray *nFragmentFilterItems;

あなたは電話する必要があります:

self.nFragmentFilterItems = [NSArray arrayWithObjects:@"Min", @"Max", nil];

また、実装ファイルでプロパティを合成する必要があります。

@synthesize nFragmentFilterItems;
于 2012-11-12T21:48:39.637 に答える