【发布时间】:2015-10-17 00:50:35
【问题描述】:
当使用removeFromSuperview 删除UIView 时,ARC 是否会正确处理UIView 的子元素的dealloc?
例如:
UIView *myView = [[UIView alloc] init];
[self.view addSubview:myView];
UILabel *myLabel = [[UILabel alloc] init];
[myLabel setText:@"Hey"];
[myView addSubview:myLabel];
如果didReceiveMemoryWarning:
[myView removeFromSuperview];
[myView removeFromSuperview]; 是否足以删除 myView 的子元素 (myLabel),还是应该删除子元素?
作为一个附带问题:除了从超级视图中删除之外,myView 是否应该设置为 nil,或者 ARC 会处理它吗?
【问题讨论】:
-
如果
myView是您在此处显示的局部变量,那么您不需要将其设置为 nil - 一旦超出范围,它的引用就会被删除。如果它是strong属性或 iVar,则需要将其显式设置为nil。通常weak引用与持有唯一strong引用的父视图一起使用
标签: ios objective-c uiview memory-leaks automatic-ref-counting