0

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

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

我发现这个线程包含发布行,但我知道这在较新的 iOS 版本中工作方式不同。

谢谢阅读。

4

2 回答 2

4

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

于 2012-11-10T04:15:36.990 回答
1

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

于 2012-11-10T04:17:54.940 回答