我创建了自己的类,由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 release],当我从parseRow方法退出时,我有EXC_BAD_ACCESS错误....但是它错了?我使用数组并在我发布之后...我认为错误将是如果我没有释放指针..或不? 提前谢谢
答案 0 :(得分:6)
问题很容易解决。您的NSArray *数组只有0个retainCount。因为您使用工厂方法componentsSeparatedByString:,它已经返回一个自动释放的数组。因此,您不再需要释放阵列了。
你需要关心的另一件事是setDriverName:和setDriverSurname :,确保你在那里保留/复制对象,当数组被释放时,那些对象也被释放,再次EXEC_BAD_ACCESS