![](/img/trans.png)
[英]Calling method presentViewController from the UIViewController in an asynchronous way
[英]Is the UIViewController calling the method presentViewController removed from the memory?
據說我有一個UIViewController A和一個UIViewController B. 從A,我調用方法presentViewController:B。 當B出現時,A會發生什么? 它是從內存中刪除的嗎? 如果沒有,我應該用什么方法來刪除它?
如果我的UI流程是這樣的, A-> B-> A-> B-> A-> B-> ...依此類推,如何防止內存相應增加?
當您使用presentViewController:animated:completion:
方法從控制器A
呈現控制器B
模態,什么情況是, presentedViewController
財產A
被設置到控制器B
,和presentingViewController
財產B
被設置為A
。 因此,在進行演示時,兩個控制器都保存在存儲器中。
當您從去B
到A
,你叫dismissViewControllerAnimated:completion:
上A
經presentingViewController
物業B
,就像這樣:
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
(您也可以調用[self dismissViewControllerAnimated:YES completion:nil]
,系統會自動將請求轉發給呈現視圖控制器。)
之后, A
的presentedViewController
屬性將被設置為nil
,因此,如果沒有任何其他強指針指向它,系統將對其進行內存釋放。
不,A不會從內存中刪除。 如果你想在A和B之間交替,你可以:
UINavigationController
並按B,然后再將其彈出,然后返回A 除非你彈出它,否則UIViewController
將保留在內存中。
使用push和pop而不是僅僅推送新的UIViewControllers
。
而不是這個A->B->A->B->A->B->
你會得到這個A<->B
有一個根視圖控制器,當A完成它的任務時,讓你的根視圖負責刪除A和呈現B。 當B完成其任務警告您的根視圖刪除B並再次顯示A時。
它不會自動釋放。 您可以使用dismissModalViewControllerAnimated
手動釋放它。
這是一個非常好的教程,可以看到這個: 鏈接
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.