iphone EXC_BAD_ACCESS используя мой собственный класс - PullRequest
0 голосов
/ 02 августа 2010

Я создал свой собственный класс, полученный из NSObject, и вот мой код:

-(void) parseRow:(NSDictionary*) dictionary {
    NSArray* arName = [[dictionary valueForKey:displayname] componentsSeparatedByString:@"+"];
    [self setDriverName:[arName objectAtIndex:0]];
    [self setDriverSurname:[arName objectAtIndex:1]];
    [arName release]; // this give problem!
}

и на мой взгляд:

driverStats = [[DriverStats alloc] init];

// driverStats is declared in the header:
DriverStats* driverStats;
@property (nonatomic,retain) DriverStats* driverStats;

[driverStats parseRow:dictionary];

Если я добавлю [выпуск arName] в свойкласс, когда я выхожу из метода parseRow, у меня ошибка EXC_BAD_ACCESS .... но это неправильно ??Я использовал массив и после того, как я выпустил ... Я думаю, что ошибка будет, если я не выпустил указатель .. или нет ???заранее спасибо

1 Ответ

6 голосов
/ 02 августа 2010

Проблема легко решается.Ваш массив NSArray * имеет только 0 retainCount.Поскольку вы используете фабричный метод componentSeparatedByString:, он возвращает вам автоматически выпущенный массив.Таким образом, вам больше не нужно освобождать ваш массив.

Еще одна вещь, о которой вам нужно позаботиться, это setDriverName: и setDriverSurname:, убедитесь, что вы сохранили / скопировали объект в противном случае, когда освобождается массив, эти объекты также освобождаются и EXEC_BAD_ACCESS снова

...