我来自java背景,所以我是内存管理的菜鸟。我需要从 NSString *str = @"hi"; 释放内存吗?我确实需要释放 NSString *str = [[NSString alloc init]? 我合成的那些 UILabel 呢?
问问题
309 次
2 回答
2
在这种情况下NSString *str = @"hi";
,您不必释放字符串,因为它是编译时常量字符串对象(您不是所有者)。在第二种情况下NSString *str = [[NSString alloc] init]
,您必须释放它,因为您是所有者,您正在分配内存,因此您是负责人。
如果您声明属性如retain
or ,则必须释放合成属性copy
。通常是发布它们的好网站dealloc
。
你应该阅读这个 Apple文档。它有点大,但很有用;)。
于 2012-05-05T16:56:31.497 回答
2
现在不需要这样做了,有了 ARC 内存管理。查看此链接了解更多信息,或在 Google 上搜索“ARC 内存管理”。
如果您仍想手动管理内存,可以关闭 ARC。查看此链接以获取快速的内存管理教程。
编辑:如果您没有使用 iOS 5,那么您必须手动管理内存。在回答您的问题“我合成的那些 UILabel 怎么样”时,如果您问如何释放它们,您只需调用
[label release];
明智的做法是调用所有发布声明
- (void)dealloc
例如:
- (void)dealloc {
[label release];
[super dealloc];
}
于 2012-05-05T16:57:41.353 回答