我把一个名为myView的视图在superview上,之后,我编码myView = nil,但不能从超级视图中移除,并且仍然有像myView这样的视图出现在超级视图中,请帮助我,告诉我为什么。myview = nil但仍然有一个超视图的观点
回答
你的问题是,为什么myView = nil
不会删除从上海华视图(因此,为什么它不释放它)。
这很简单,当你做viewA addSubview:viewB
时,你创建了一个从viewA
到viewB
的参考。
所以当你做viewB = nil
,你仍然有一个从viewA
到viewB
的指针,所以ARC
不释放视图。
这就是为什么你应该拨打[viewB removeFromSuperview]
删除指针。
请使其零使用[myView removeFromSuperView];
谢谢你,但我知道如何删除,什么让我感到困惑的是,为什么我让我的视图=零,仍然有超视图的观点 –
有时超视图不布局,如果你使子视图无 –
它不是某个时候,它从来没有布局,当我使子视图零,以及如何强制superview布局 –
使用标签来你要删除,并与该标签的参考删除视图的视图之前从超级视图您的视图。 喜欢:
tempView.tag == 1;
for(UIView *temp in [self.view subviews]) {
if (temp.tag == 1) {
[temp removeFromSuperview];
}
}
你必须调用myView.removeFromSuperview() –
谢谢,但我知道如何删除,什么让我感到困惑的是,为什么我让我的视图=零,仍然有一个超级视图 –