我懷疑是什麼時候應該釋放字符串。我沒有對字符串進行任何分配,是否有任何必要釋放字符串?字符串的釋放
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. 不能釋放一個Malloc'd字符串
- 3. 爲什麼c字符串被釋放?
- 4. 釋放字符指針
- 5. C++字符串重新分配,舊字符串是否正確釋放?
- 6. C:如何釋放分配的字符串的初始部分?
- 7. 釋放包含malloc'd字符串的malloc'd結構
- 8. 如何釋放在方法內創建的字符串?
- 9. 如何釋放臨時字符串的內存?
- 10. 解釋Java字符串
- 11. 字符串排列解釋?
- 12. Go中的解釋字符串文字
- 13. 字符串放下字母?
- 14. 播放字符串數據。 (播放字符串值爲音頻)
- 15. 字符串文字不解釋爲字符串
- 16. 地圖[詮釋,字符串]在播放框架模板
- 17. 免費()不釋放字符串從結構陣列
- 18. 是stringByTrimmingCharactersInSet:一個自動釋放字符串?
- 19. 爲什麼我不應該釋放這個字符串?
- 20. 內存泄漏與自動釋放字符串iphone
- 21. 什麼時候釋放字符串指針?
- 22. iOS內存管理:釋放一個字符串還是不?
- 23. 詮釋到字符串然後放入爲
- 24. 如何知道什麼時候釋放字符串iphone
- 25. scanCharactersFromSet:intoString:創建一個自動釋放字符串?
- 26. 將字串放入字符串數組
- 27. 如何將字符串放入特定字符串後的字符串
- 28. xml nodeValue字符串解釋爲數字
- 29. 使用替換$ 1將字符串「$ 1」解釋爲字符串
- 30. Python的字符串解釋和解析
你好,也許這有助於: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