【发布时间】:2013-12-18 03:57:39
【问题描述】:
我遇到了一个问题,几天来检查了很多答案。我的问题是当我在 Xcode 中选择 profile>Leaks 时,我看到 UILabel(CALayer) 在 Live Bytes 中总是越来越大。是正常的还是漏水?我该怎么办?当我改变班级并回到具有这些标签的班级时,它变得越来越大。就像他们一遍又一遍地分配但不释放旧的一样。
我在 h 中设置了我的标签。像这样的文件
@property(weak,nonatomic)IBOutlet UILabel *lblNumbersSpelling1;
@property(weak,nonatomic)IBOutlet UILabel *lblNumbersSpelling2;
@property(weak,nonatomic)IBOutlet UILabel *lblNumbersSpelling3;
@property(weak,nonatomic)IBOutlet UILabel *lblNumbersSpelling4;
和,
- (void)viewDidUnload
{
[super viewDidUnload];
self.lblNumbersSpelling1=nil;
self.lblNumbersSpelling2=nil;
self.lblNumbersSpelling3=nil;
self.lblNumbersSpelling4=nil;
self.lblRecordSayfasiNot=nil;
// Release any retained subviews of the main view.
}
我这样做了,但我不确定我在 viewDidUnload 方法中所做的是否有必要。 我使用 Xcode 5。 提前致谢。
【问题讨论】:
-
如果您使用 ARC,则不必这样做,但另外您需要在控制器中收到内存警告时释放/重新加载。
-
@fenk 没有警告,我清理了它们,但 Xcode 仪器部分的标签越来越大。不知道是漏电还是什么。顺便谢谢你的回复。
-
你在使用
ARC吗?如果是这样,您不需要使用self.lbl.... = nil;如果您不使用ARC,那么您不需要在viewDidUnload中执行此操作,它需要在dealloc中完成,但我建议您改用@987654328 @Apple 真的开始推动开发人员使用它,我认为它也让生活变得更轻松。 -
@Popeye 是的,我确实使用 ARC。
-
那么不需要这样做。您的标签对象将自动释放这是
ARC的目的,它是一个自动内存管理系统。
标签: objective-c memory-management uilabel automatic-ref-counting instruments