gpt4 book ai didi

objective-c - 自动释放 NSMutableArray 的问题

转载 作者:行者123 更新时间:2023-11-28 18:44:36 25 4
gpt4 key购买 nike

我无法释放我在方法中创建的 NSMutableArray。

SqliteData *s = [SqliteData alloc];

items = [NSArray alloc];
items = [s getItems:parent];
[s release];

在 SQLITeDATA 类中

-(NSMutableArray *)getItems:(NSString *)parent
{
NSMutableArray *items = [[[NSMutableArray alloc] init]autorelease];
return items
}

应用程序崩溃,如果我删除自动释放它工作正常。

最佳答案

正确的版本是:

SqliteData *s = [[SqliteData alloc] init];
items = [[s getItems:parent] retain];
[s release];

这与

类似,但优化程度较低:
SqliteData *s = [[[SqliteData alloc] init] autorelease];
items = [[s getItems:parent] retain];

注意内存泄漏:

SqliteData *s = [SqliteData alloc];
items = [NSArray alloc]; // memory leak there!
items = [s getItems:parent];
[s release];

您正在泄漏内存,因为您将新分配的 items 地址替换为另一个地址。

而没有 initalloc 是无稽之谈。 (你正在分配内存,但没有初始化它!)

关于objective-c - 自动释放 NSMutableArray 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6376198/

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