2

我有一個導航控制器和表視圖。當有人點擊桌面視圖時,我執行以下操作:UINavigationController泄漏/理解popViewController

MyViewController *myViewController = [[MyViewController alloc] initWithImage:image]; 
[image release]; 
[self.navigationController pushViewController:myViewController animated:YES]; 
[myViewController release]; 

myViewController將保留圖像。

現在,如果我在NavigationController中來回移動,則會發生泄漏,因爲每次都會創建一個新的MyViewController,而且顯然popViewController不會釋放myViewController。我的問題: 爲什麼popViewController不釋放控制器? 我應該如何處理?把myViewController作爲我的類的成員,並檢查它是否已經存在,而不是每次創建它?

預先感謝您的幫助,

回答

1

顯然問題是這個代碼在另一個線程中調用,然後此線程必須有另一個autorelease池讓autorelease正常工作。

0

我通常在類聲明的viewController一次,分配在init並在必要時推動。然後在推視圖控制器我調整在viewWillAppear: