比较来自世界各地的卖家的域名和 IT 服务价格

释放时 NSString 在 iPhone

我有以下方法


-/NSMutableArray */ getPaises {
NSMutableArray * paises;
paises = [[NSMutableArray alloc] init];
while/ get new row / {
NSString *aPais = [NSString stringWithUTF8String:/char */sqlite3_column_text/compiledStatement, 0/];
[paises addObject:aPais];
}
return paises;
}


我没有发布 aPais, 因为如果我这样做,应用程序将失败。 我不知道我什么时候应该在使用后在某个地方发布它,如果是的话,我将如何做到。 刚释放足够 NSMutableArray? 或者我应该穿过它并释放每个对象吗?

如果我不必让他,谁负责释放?
已邀请:

小姐请别说爱

赞同来自:

随着摘除器表示,您无需释放此特定字符串。 如果你想更活跃,你可以做到这一点:


-/NSMutableArray */ getPaises {
NSMutableArray * paises;
paises = [[[NSMutableArray alloc] init] autorelease];
while/ get new row / {
NSString *aPais = [[NSString alloc] initWithUTF8String:/char */sqlite3_column_text/compiledStatement, 0/];
[paises addObject:aPais];
[aPais release];
}
return paises;
}


总之:

[[NSString 线 alloc] initWith...] -> 必要的 release 或者 autorelease.

[NSString stringWith...] - > 无需发布。

-- Edit: 添加
autorelease

为了 paises, 自从你回来。 返回对象时,如果您有,始终自动化 alloc&init'd.

小姐请别说爱

赞同来自:

stringWithUTF8String:

返回字符串 autorelease 这将自动发布 Cocoa 在下面的 eventloop. 但是,字符串也会保存在数组中
addObject:

......所以虽然它在数组中,它将被保存。

要回复问题请先登录注册