2010-03-18 49 views
0

在我的應用程序中,我創建視圖控制器對象,因爲我需要它們。當視圖控制器消失時,我通過在視圖上調用-removeFromSuperview來刪除它,然後將保留屬性設置爲nil。動畫會導致我的應用崩潰:如何刪除它們?

這樣我的應用程序一直使用非常低的內存。但是有一個問題:我在一些視圖控制器中有很多動畫,每個動畫總是有一個自己的動畫委託。現在發生的事情是:當有動畫運行並且我放下視圖控制器時,它會消失 - 當某些動畫完成時,它似乎會崩潰。

所以問題是:如何從視圖中刪除任何正在運行的動畫及其所有子視圖?

+0

我想你問的是錯誤的問題。如果應用程序在完成動畫時崩潰,則應該查明它爲什麼會崩潰,而不是如何刪除動畫。這聽起來像是在這裏的低層有什麼問題。 – 2010-03-18 16:51:21

回答

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 

+0

分支的東西好。謝謝。 – dontWatchMyProfile 2010-04-01 20:29:10

相關問題