2012-08-15 56 views
0

我一直面對解除模態視圖的奇怪問題。Modal View在解僱後不會自行釋放

我提出這樣一個模式的看法:

ResepiDetail *detail =(ResepiDetail*)[[ResepiDetail alloc]init]; 
[self presentModalViewController:detail animated:YES]; 

並關閉它像這樣一個後退按鈕:

[self dismissModalViewControllerAnimated:YES]; 

後有鑑於此駁回本身並回到以前的觀點,但它不會從內存中釋放它自己。我通過發送通知消息發現它,並且該視圖收到它。此外,我試圖跟蹤虛擬機內存分配,並且它看起來仍然在內存中。

我正在使用ARC,並使用相同的方法用於完美工作的另一個視圖。

+0

ResepiDetail中有一個強大的指針,指向顯示它的視圖嗎? – 2012-08-15 04:23:16

+0

你可以在解僱它的時候設置細節爲零,如detail = nil; – freelancer 2012-08-15 04:27:03

+0

不,沒有。 – Danialzo 2012-08-15 04:28:57

回答

0

的代碼是好的,張貼,所以這裏是如何進行的一些提示:

肯定火的方式來某些您的視圖控制器還沒有被釋放是重寫的dealloc和日誌的東西可識別。你仍然可以在ARC中做到這一點,只是不明確地呼籲super。如果你沒有看到預期的日誌,那麼你有問題。

假設您確定您確實存在問題,那麼問題就是找到保留週期。如果問題是,ResepiController一個實例沒有被dealloc'd,那麼你需要尋找...

  1. 任何代碼具有strong參考它的ResepiController類之外。例如,如果您的班級註冊爲其他班級的代表,請確保該代表未使用strong參考。
  2. 任何可能隱含保留的內部塊self。在您認爲應該發佈的時候,您的程序中是否有任何可能引用您的控制器的塊?