问题描述
|
我找不到为什么我拥有的对象被释放的原因。在什么情况下,如果没有uiview对象,则将其释放?
背景:
对象ObjectA是UIView的子类,并在UITableView子类TableA的tableHeaderView中进行子视图。 TableC是TableB的子类,TableB是TableA的子类。
UITableView ==> TableA(此处为tableHeaderView实例化对象A)==> TableB ==> TableC
我目前在TableC中有3个部分,一切正常。如果我添加第4部分,则在ObjectA上调用dealloc。
解决方法
如果不是您要释放视图,则通常会在超级视图正在卸载或交换内容视图时发生-也就是说,当从视图图中删除子视图时,将向您的子视图发送“ 0”消息(因为子视图由其父视图保留)。
在ѭ1中设置一个断点并检查跟踪应该可以弄清楚原因,尽管如果在销毁自动释放池时取消视图分配,则距调用站点可能很远,那么跟踪将无用。
,-dealloc在对象被释放,保留,分配或复制的任何时间被调用。就这么简单。
如果您的视图仍然是另一个视图的子视图,则该视图正在被重新分配,则您在某个位置过度释放了它。