0

pickerView を実行しようとしていますが、アクセスがうまくいきません:

ここに私のコードがあります

-(void) viewWillAppear:(BOOL)animated {
    list = [[NSArray alloc]init];
    [self populateList]
}

-(void) populateList {
    NSString *path = [[NSBundle mainBundle] pathForResource:@"nameoffile" ofType:@"txt"];
    NSString *file = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL];
    list = [file componentsSeparatedByString:@"\n"];
}


 - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
     return (NSString *)[list objectAtIndex:row]; //here I'm getting bad acces
 }

エラーは次のとおりです。「スレッド 1: EXC_BAD_ACCESS(コード = 1、アドレス = 0xa001cc65)」

4

1 に答える 1

2

NSArrayによって返されるcomponentsSeparatedByString:値は自動解放された値なので、保持する必要があります。

以下を削除する必要があります。

list = [[NSArray alloc]init];

以下に保持を追加します。

list = [[file componentsSeparatedByString:@"\n"] retain];
于 2013-02-19T15:10:16.380 に答える