我怀疑是什么时候应该释放字符串。我没有对字符串进行任何分配,是否有任何必要释放字符串?字符串的释放
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