2010-02-03 102 views
1

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

+0

你好,也许这有助于:http://developer.apple.com/ http://stackoverflow.com/questions/602178/when-to-release-a-nsstring-in-iphone – Skurmedel 2010-02-03 12:03:43

+1

这可能也有帮助:http://developer.apple.com/ mac/library/documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html – dreamlax 2010-02-03 12:16:05

+0

非常感谢你对我的帮助。 – monish 2010-02-03 12:17:32

回答

0

不,如果您不“分配”他们自动释放的字符串。 例如

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

这个字符串被自动释放,所以你不用调用[aTestString发布]做;

如果你这样做:

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

那么你就需要通过[aTestString发布]将其释放;因为你手动分配。 因此,这是明智的,自动释放它,所以你不必以后想起来上

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

但是,这也只是一样的第一段代码我给你。回到这一点,只要你不自己分配它,你不必手动释放它。

0

对象分配/释放规则

你需要调用[Object release]当且仅当:

  • 你叫[Object alloc]
  • 你叫[Object retain]
  • 你叫[Object new]

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