动态创建iOS UILabels - 我需要发布吗?

时间:2012-11-10 04:14:38

标签: objective-c ios uilabel release

如果我以编程方式创建UILabel,是否有必要在之后发布它?如,

UILabel *label =  [[UILabel alloc] initWithFrame:...];
[self.view addSubView:label];
[label release];  // <-- is this needed?

我发现this thread包含了发布行,但据我所知,这在较新的iOS版本中有所不同。

感谢阅读。

2 个答案:

答案 0 :(得分:4)

是的,除非您使用ARC,否则需要将其释放 在这种情况下,当您alloc保留计数为1时 当您执行addSubView时,视图将retain您的标签:保留计数为2.
因此,您可以自由地release平衡alloc保留计数现在为1.
但是{1} ownself.view,当它不再需要它时会调用release。
当发生这种情况时,标签的保留计数将降至0,它将为deallocated,并且它的内存将是免费的。

答案 1 :(得分:1)

如果您的项目设置为使用ARC(自动引用计数),则尝试将调用添加到release时会出错。如果您在尝试添加该行时没有收到任何错误,那么您不使用ARC,并且确实需要该行来避免内存泄漏。