我懷疑是什麼時候應該釋放字符串。我沒有對字符串進行任何分配,是否有任何必要釋放字符串?字符串的釋放
Q
字符串的釋放
1
A
回答
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
您是否通過致電alloc
,new
或包含copy
的方法創建字符串?你自己明確retain
弦?如果您從CFStringRef
獲得NSString
,您是否創建了CFStringRef
,其功能包括create
?如果沒有,你不需要做任何事情。 If you did, you have to either release
or autorelease
the string.
0
對象分配/釋放規則
你需要調用[Object release]
當且僅當:
- 你叫
[Object alloc]
- 你叫
[Object retain]
- 你叫
[Object new]
如果您沒有明確分配或保留該對象,則需要將其釋放。如果您通過類方法獲得對象,則該方法執行如下操作:return [[[Object alloc] init] autorelease];
。這將分配一個新的對象,但在NSAutoReleasePool下一次有機會時會自動釋放。
相關問題
- 1. 避免釋放字符串文字
- 2. 釋放自動釋放的字符串對象不會崩潰
- 3. 不能釋放一個Malloc'd字符串
- 4. 爲什麼c字符串被釋放?
- 5. 釋放字符指針
- 6. 釋放字符指針
- 7. C++字符串重新分配,舊字符串是否正確釋放?
- 8. C:如何釋放分配的字符串的初始部分?
- 9. 釋放分配給C中字符串的內存
- 10. 動態分配的字符串數組沒有被釋放
- 11. 釋放包含malloc'd字符串的malloc'd結構
- 12. 釋放一個靜態字符串的動態數組
- 13. FMDB,如何手動釋放從stringForColumn創建的字符串
- 14. 如何釋放在方法內創建的字符串?
- 15. 如何釋放臨時字符串的內存?
- 16. 我應該釋放由cStringUsingEncoding返回的字符串嗎?
- 17. 解釋Java字符串
- 18. 解釋填充字符串
- 19. line.startsWith不解釋字符串
- 20. 字符串排列解釋?
- 21. Go中的解釋字符串文字
- 22. 字符串放下字母?
- 23. 從NSArray到註釋,字符串的字符串
- 24. 播放字符串數據。 (播放字符串值爲音頻)
- 25. 字符串文字不解釋爲字符串
- 26. 什麼時候釋放字符串指針?
- 27. 內存泄漏與自動釋放字符串iphone
- 28. 如何在Android jni中釋放字符串?
- 29. 如何知道什麼時候釋放字符串iphone
- 30. scanCharactersFromSet:intoString:創建一個自動釋放字符串?
你好,也許這有助於:http://developer.apple.com/ http://stackoverflow.com/questions/602178/when-to-release-a-nsstring-in-iphone – Skurmedel 2010-02-03 12:03:43
這可能也有幫助:http://developer.apple.com/ mac/library/documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html – dreamlax 2010-02-03 12:16:05
非常感謝你對我的幫助。 – monish 2010-02-03 12:17:32