我发现了类似的问题: NSMutableArray addObject in for loop - memory leak
但这些建议都没有解决我的问题。
我有一个简单的循环,我正在创建一个对象并将其添加到数组中。当我尝试在每个循环结束时释放对象时,应用程序崩溃为“EXC_BAD_ACCESS”。如果我不释放对象,我会泄露内存:
在.h
NSMutableArray *mainlist;
...
@property (nonatomic, retain) NSMutableArray *mainList;
在.m
@synthesize mainlist;
...
for (int i = 0; i < [self.objects count]; i++) {
MyObj *myObj = [[MyObj alloc] init];
myObj.title = [[self.objects objectAtIndex: i] valueForKey: @"title"];
[self.mainlist addObject:myObj];
[myObj release]; // crashes with release
}
MyObj只有一些属性:
@property (nonatomic, retain) NSString *title;
@property (nonatomic, retain) NSString *date_text;
...
@synthesize title;
@synthesize date_text;
- (void)dealloc
{
[super dealloc];
[title release];
[date_text release];
}
@end
非常感谢任何帮助。
感谢。
答案 0 :(得分:3)
崩溃导致您首先调用超类的dealloc,然后尝试释放属性。将其更改为:
- (void)dealloc
{
[title release];
[date_text release];
[super dealloc];
}
而且:当你在那里添加对象时,我几乎可以肯定你的self.mainlist是零。创建属性并不意味着该属性将自动初始化。