我有一個非常搞砸的視圖系統正在進行。我經歷了幾個模態視圖,然後想要跳回原始視圖(循環回到本身)。唯一的問題是,它會不斷分配新視圖,直到內存不足和應用程序崩潰。我如何告訴我的應用程序,我從來沒有回到預覽視圖控制器,它應該釋放內存塊?我想要做這樣的事情: self.presentingViewController = nil; 但它是隻讀的,我對它的看法越多,就不能像那樣工作。 這是我的故事板。 ios模式到以前的視圖控制器正在創建內存問題
回答
這是不完全清楚自己在做什麼,以及爲什麼它像您期望的不工作,但我認爲,以下方法應該爲你工作:
我開始在「根表視圖」,然後我做了模態
*然後從該視圖‘PLACEHOLD’文本我模態的遊戲控制器
然後我想模態回到navcontroller/root表視圖。
我假設你正在做的1和2使用– presentViewController:animated:completion:
(或者現在已經過時– presentModalViewController:animated:
)。
爲了做到3,你必須調用:
[self.presentingController dismissViewControllerAnimated:ZZZ completion:nil];
這將關閉所有從根表視圖模式視圖控制器到你的駁回之一。
如果你已經這樣做了,而且它不能按你的要求工作,我想這可能是因爲你正在關閉模態視圖控制器並在同一個運行循環中呈現一個新的視圖控制器。爲了解決這個問題,只需在您的根控制器定義一個方法,說:
- (void)presentFirstViewController {
[self presentViewController:xxxxx animated:YES completion:nil];
}
後您關閉模態控制器做:
self.presenting.Controller dismissViewControllerAnimated:YES completion:nil];
,並提交新的做:
[rootController performSelector:@selector(presentFirstViewController) withObject:nil afterDelay:0.0];
這最後一步將提供一些時間讓運行循環在解僱時清理事情,並相繼呈現模態控制器。
Hoper這有助於。
塞爾吉奧,這就是我最終做的,它很好,我不必運行performSelector技巧。但是遊戲控制器沒有從內存中釋放,我找不到原因。當我運行儀器/泄漏並經過「遊戲控制器」幾次時,我可以看到舊的遊戲控制器永遠不會從內存中清除。我能以某種方式迫使他們在完成塊中釋放嗎? –
你可以嘗試在完成塊中爲它們分配nil,儘管我也會在第一個地方尋找它們被過度保留的位置。根據它們被過度保留的原因,在完成塊中刪除它們可能沒有問題,或者您可能會找到更好的解決方案。 – sergio
因爲它是隻讀的,所以你不能將其刪除。 –
- 1. 現在的模態視圖控制器中的內存問題
- 2. iPad模式視圖問題:創建視圖控制器後的模式視圖標籤爲空
- 3. 得到以前的模式視圖控制器
- 4. 視圖控制器內存管理iOS
- 5. 模態呈現多個視圖控制器 - 內存問題?
- 6. iOS:在當前模態視圖控制器後面切換視圖控制器?
- 7. 在iOS中創建視圖控制器並訪問標籤
- 8. 內存管理如何在導航控制器上創建視圖控制器
- 9. 訪問模式視圖控制器父
- 10. 控制器創建問題
- 11. 創建視圖控制器
- 12. ember.js - 創建新模型的正確控制器/視圖模式是什麼
- 13. 在模態視圖控制器上模擬內存警告清除前一個控制器的內容
- 14. 視圖控制器問題
- 15. 移動到視圖時出現問題IOS中的控制器
- 16. 在視圖控制器內創建多個子視圖
- 17. 內存警告創建根視圖控制器的新對象
- 18. 在MVC模式中,控制器可以創建自己的視圖嗎?
- 19. 通過模型在MVC視圖中創建到控制器
- 20. 設定框在當前模式視圖控制器在iOS的7
- 21. 呈現第二個模式視圖控制器的問題
- 22. 問題與Dropbox的iPad登錄模式視圖控制器
- 23. iOS - 獲取當前視圖控制器
- 24. 以swift方式保存當前視圖控制器
- 25. 以編程方式在視圖控制器中訪問視圖
- 26. 釋放細節視圖控制器導致內存問題
- 27. 在iOS中使用分割視圖控制器的問題
- 28. 釋放內存關閉模式視圖控制器
- 29. 將模型從視圖傳遞到控制器的問題
- 30. 如何從導航控制器ios中刪除以前的視圖控制器?
你是什麼意思「想跳回原始視圖(循環回自己)」?爲什麼在原始視圖上放棄模態視圖不起作用? – sergio
因此,我從「根表視圖」開始,然後對「朋友選取器控制器」下方的導航控制器執行模態操作。然後從「placehold」文本的角度來看,我模式化爲遊戲控制器。然後我想模態回到左邊的navcontroller/root表格視圖,然後再做一遍。這就像我一直在推動堆疊中的東西,永遠不會清除它。 –