-4

我来自java背景,所以我是内存管理的菜鸟。我需要从 NSString *str = @"hi"; 释放内存吗?我确实需要释放 NSString *str = [[NSString alloc init]? 我合成的那些 UILabel 呢?

4

2 回答 2

2

在这种情况下NSString *str = @"hi";,您不必释放字符串,因为它是编译时常量字符串对象(您不是所有者)。在第二种情况下NSString *str = [[NSString alloc] init],您必须释放它,因为您是所有者,您正在分配内存,因此您是负责人。

如果您声明属性如retainor ,则必须释放合成属性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 回答