在我的应用程序中,我根据需要创建视图控制器对象。当一个视图控制器消失时,我通过在它的视图上调用-removeFromSuperview然后将retain属性设置为nil来摆脱它。
这样我的应用程序一直使用非常低的内存。但是有一个问题:我在一些视图控制器中有很多动画,每个动画总是有一个自动的动画委托。现在发生的事情是:当有动画运行并且我放下视图控制器时,它会消失 - 在某些时候,当其中一个动画完成时,它似乎会崩溃。
所以问题是:如何从视图及其所有子视图中删除任何正在运行的动画?
答案 0 :(得分:1)
同意。关于如何添加/删除子视图以及如何保留/释放子视图可能存在一些混淆。确保您遵循以下准则:
// To add
AView * aSubView = [[AView alloc] init];
[aContainerView addSubview:aSubView];
[aSubView release]; // aSubView is retained by aContainerView
......以及稍后的
// To remove
[aSubView removeFromSuperview]; // and nothing else!
不执行此操作:
[self removeFromSuperview]; // Don't cut the branch on which you are sitting
(你已经知道了!)