从SuperView中删除视图,通知iPhone上的子视图

MAb*_*bas 1 iphone cocoa-touch uikit uiview

从超级视图中删除视图时会触发什么事件?其子视图是否收到任何消息?例如,我将subview2和subview3添加到subview1中,如下所示

super_view - > subview1 - > subview2 - > subview3

如果我删除subview1例如

[subview1 removeFromSuperview]; 
Run Code Online (Sandbox Code Playgroud)

它的子视图(subview2和subview3)接收什么事件?

有没有办法让子视图知道他们的超级视图被删除了?

Jan*_*les 5

它取决于subview2和subview3的保留计数.如果你通过[[UIView alloc] initWithFrame:frame]创建它们,然后将它们添加为子视图,它们的保留计数为2.(或者3,如果你在保留属性中保留一个引用,即self.subview2 = [...

因此,如果您希望在发布subview1时释放它们,那么确保在将它们添加为子视图后再给它们另一个版本,这样它们的保留计数就是添加为子视图的唯一一个.像这样......

UIView* subview2 = [[UIView alloc] initWithFrame:myFrame];
[subview1 addSubview:subview2];
[subview2 release];
Run Code Online (Sandbox Code Playgroud)