Dealloc调用UIView子类

时间:2011-05-24 20:23:41

标签: iphone objective-c

我找不到我所拥有的对象被解除分配的原因。 uiview对象在什么情况下会在其超级视图未被释放时被解除分配?

背景: 对象ObjectA是UIView的子类,并在UITableView的子类tableHeaderView中进行子视图,名为TableA。 TableC是TableB的子类,它是TableA的子类。

UITableView ==> TableA(objectA在这里为tableHeaderView实例化)==>表B ==>表C

我目前在TableC中有3个部分,一切正常。如果我添加第4个部分,则在ObjectA上调用dealloc。

2 个答案:

答案 0 :(得分:1)

如果不是您发布视图,则通常会在超级视图卸载或交换内容视图时发生 - 也就是说,当您从视图中删除子视图时,您的子视图将被发送{{ 1}}消息(因为子视图由其父视图保留)。

release中设置断点并检查跟踪应该使原因明显,尽管如果在自动释放池被销毁时你的视图被释放,那么它可能距离调用点数英里,然后跟踪不会很有用。

答案 1 :(得分:1)

-dealloc在对象被释放的任何时候被调用,因为它被保留,分配或复制多次。就这么简单。

如果您的视图已被解除分配,即使它仍然是另一个视图的子视图,您也会在某个地方过度释放它。