gpt4 book ai didi

循环中的Objective-c addObject导致内存泄漏

转载 作者:搜寻专家 更新时间:2023-10-30 20:12:01 26 4
gpt4 key购买 nike

我发现了一个类似的问题: 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

如有任何帮助,我们将不胜感激。

谢谢。

最佳答案

崩溃是因为你先调用父类(super class)的dealloc,然后尝试释放属性。将其更改为:

- (void)dealloc
{
[title release];
[date_text release];

[super dealloc];
}

还有:我几乎可以肯定你的 self.mainlist 是 nil,当你在那里添加对象时。创建属性并不意味着该属性会自动初始化。

关于循环中的Objective-c addObject导致内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5921235/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com