如果我以编程方式创建 UILabel,是否有必要在之后发布它?例如,
UILabel *label = [[UILabel alloc] initWithFrame:...];
[self.view addSubView:label];
[label release]; // <-- is this needed?
我发现这个线程包含发布行,但我知道这在较新的 iOS 版本中工作方式不同。
谢谢阅读。
如果我以编程方式创建 UILabel,是否有必要在之后发布它?例如,
UILabel *label = [[UILabel alloc] initWithFrame:...];
[self.view addSubView:label];
[label release]; // <-- is this needed?
我发现这个线程包含发布行,但我知道这在较新的 iOS 版本中工作方式不同。
谢谢阅读。
是的,除非您使用 ARC,否则您需要释放它。
在这种情况下,当您alloc
的保留计数为 1。
当您执行addSubView
视图时,retain
您的标签将:保留计数为 2。
因此,您可以自由地release
平衡您的alloc
保留计数现在为 1。
但 1own
是self.view
当它不再需要它时它会调用释放。
当发生这种情况时,标签的保留计数将降至 0,deallocated
并且它的内存将是空闲的。
如果您的项目设置为使用 ARC(自动引用计数),那么尝试将调用添加到release
. 如果您在尝试添加该行时没有收到任何错误,那么您没有使用 ARC,并且您确实需要该行来避免内存泄漏。