2011-09-02 83 views
2

我正在使用addSubView方法添加視圖。 viewWillDisappear有沒有其他方法可用? viewWillDisappear不會觸發。我想在當前視圖消失時釋放所有分配的對象。目前我正在使用dealloc方法來做到這一點。但是,dealloc方法並不是很快。由於我收到內存警告,有時我的應用程序可能會崩潰。主要問題是語音文件。視圖會消失不會觸發

+0

你認爲viewWillDisappear應該被調用,爲什麼?您是否通過導航控制器,標籤欄控制器,以模態方式呈現另一個視圖控制器或執行其他操作,從視圖控制器導航? –

回答

0

您可以嘗試release方法viewDidDisappear中的對象。然後你就不會等待射擊方法dealloc

的方法 viewDidDisappear你可以嘗試從上海華刪除所有子視圖(將調用 viewWillDisappear所有子視圖)

另外:

NSArray *subviews = [self.view subviews]; 
for (UIView *view in subviews) 
    [view removeFromSuperview]; 
+0

因爲我使用addSubView viewDidDisappear,所以viewWillDisappear將不起作用。我做了這個使用代碼:[myViewController viewWillAppear:YES]; –

+0

即使你對該視圖的調用方法'removeFromSuperview' ??? – Nekto

0

釋放viewDidUnload/viewDidDisappear對象和dealloc的設置爲nil

這可能工作,但你一定要看看爲什麼viewWillDisappear沒有被調用。

+0

釋放你設置爲零的「對象」沒有意義,因爲它們不是對象,它們是指向零的對象,並且你不能釋放零。 –

+1

@fichek你是對的,我的錯誤 –

+1

這樣更好:) –

1

addSubview/removeFromSuperview(這些方法與視圖不是視圖控制器有關)不調用viewWillAppear/viewWillDisappear方法。您應該在dealloc()本身中編寫發行對象代碼。
removeFromSuperview應該調用dealloc()。

+0

GOT IT WORKED !!! –

+0

當視圖動畫開始時,通過手動發送此消息給VC來修復它。 代碼: [myViewController viewWillAppear:YES]; –

+1

是的,有些時候需要手動調用這些函數。 – Mahesh