iphone EXC_BAD_ACCESS使用我自己的类

时间:2010-08-02 09:53:38

标签: iphone objective-c class instance exc-bad-access

我创建了自己的类,由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错误....但是它错了?我使用数组并在我发布之后...我认为错误将是如果我没有释放指针..或不? 提前谢谢

1 个答案:

答案 0 :(得分:6)

问题很容易解决。您的NSArray *数组只有0个retainCount。因为您使用工厂方法componentsSeparatedByString:,它已经返回一个自动释放的数组。因此,您不再需要释放阵列了。

你需要关心的另一件事是setDriverName:和setDriverSurname :,确保你在那里保留/复制对象,当数组被释放时,那些对象也被释放,再次EXEC_BAD_ACCESS