我找不到我所拥有的对象被解除分配的原因。 uiview对象在什么情况下会在其超级视图未被释放时被解除分配?
背景: 对象ObjectA是UIView的子类,并在UITableView的子类tableHeaderView中进行子视图,名为TableA。 TableC是TableB的子类,它是TableA的子类。
UITableView ==> TableA(objectA在这里为tableHeaderView实例化)==>表B ==>表C
我目前在TableC中有3个部分,一切正常。如果我添加第4个部分,则在ObjectA上调用dealloc。
答案 0 :(得分:1)
如果不是您发布视图,则通常会在超级视图卸载或交换内容视图时发生 - 也就是说,当您从视图中删除子视图时,您的子视图将被发送{{ 1}}消息(因为子视图由其父视图保留)。
在release
中设置断点并检查跟踪应该使原因明显,尽管如果在自动释放池被销毁时你的视图被释放,那么它可能距离调用点数英里,然后跟踪不会很有用。
答案 1 :(得分:1)
-dealloc在对象被释放的任何时候被调用,因为它被保留,分配或复制多次。就这么简单。
如果您的视图已被解除分配,即使它仍然是另一个视图的子视图,您也会在某个地方过度释放它。