2010-02-03 70 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下一次有機會時會自動釋放。