释放字符串

时间:2010-02-03 11:56:42

标签: objective-c

我怀疑是什么时候应该释放字符串。我没有对字符串进行任何分配是否有必要释放字符串?

3 个答案:

答案 0 :(得分:0)

否,如果您没有“分配”它们自动释放的字符串。 例如

NSString *aTestString = [NSString stringWithFormat:@"Hello %@",@"World"];

此字符串是自动释放的,因此您无需调用[aTestString release];

如果你愿意:

NSString *aTestString = [[NSString alloc] initWithFormat:@"Hello %@",@"World"];

然后你需要通过[aTestString release]释放它;因为你手动分配。 因此,自动释放它是明智的,所以你不必在以后想到它

NSString *aTestString = [[[NSString alloc] initWithFormat:@"Hello %@",@"World"] autorelease];

但那与我给你的第一段代码相同。 回到这一点,只要您不自行分配,就不必手动释放它。

答案 1 :(得分:0)

是否通过调用allocnew或包含copy的方法创建了字符串?您是否自己明确retain字符串?如果您从NSString获得CFStringRef,是否使用包含CFStringRef的函数创建了create?如果没有,您不必做任何事情。 If you did, you have to either release or autorelease the string.

答案 2 :(得分:0)

对象分配/释放规则

当且仅当:

时,您需要致电[Object release]
  • 您致电[Object alloc]
  • 您致电[Object retain]
  • 您致电[Object new]

如果您没有显式分配或保留对象,则需要将其释放。如果通过类方法获得了对象,则该方法执行如下操作:return [[[Object alloc] init] autorelease];。这会分配一个新对象,但是当NSAutoReleasePool接下来有机会时会自动释放。