2014-01-11 25 views
0

我已閱讀Apple的design patterns文檔和其他一些指南,還有一些我無法理解的內容。模態視圖控制器的生命週期?

我遇到了在viewControllers之間傳遞變量的問題,我看到了delegate選項。 比我知道,如果你從viewControlAviewControlB,並且你需要更新一些mutableArray從B到A,你可以從B發佈一個委託,A會得到它。

,如果A能聽到代表,這意味着,一個還活着後,我去了B。 我在想,只有當你在push之間的視圖之間,前一個仍然存在,但是當轉換爲modal時,前一個場景實際上已經死了。

每個視圖控制器類的生命週期是什麼?他們一直活着?

回答

2

如果你有兩個UIViewController叫做AB,並要顯示B模態,A保留在內存中。沒有人說要刪除A(這是真的,直到代碼的其他部分將刪除它)。

所以,A可以到B直到後者(B)迴應仍是ApresentingViewController)的presentedViewController

關於delegate,你可以避免它。假設例如是AB

@property (nonatomic, strong) NSMutableArray* myArray; 

屬性呈現B爲模態控制器之前,你可以說

B* b = // alloc init 
b.myArray = [self myArray]; 
// present modally B 

現在,他們會接觸到同一陣列。當B被解僱(如果您沒有提及它,它將從內存中釋放),myArray(在A內),您將在B中找到修改。

顯然這只是一個例子。這不是建議不要使用delegate s。

如需進一步的參考資料,我只想看看Apple Doc中的Presenting View Controllers from Other View Controllers

+0

非常感謝!所以什麼時候A從內存中清除?如果我從A到B和C,所有鏈都在內存中?如果我通過解僱B從B去A,那麼B就已經死了? – Curnelious

+0

@Curnelious你需要考慮對象圖形。 ROOT - > A - > B中。如果B被解僱,現在你有ROOT - > A。如果ROOT解僱A,您將只擁有ROOT。附:如果你願意,也可以Upvote。乾杯。 –

+0

@Curnelious顯然你需要看看保留週期。看到我的答案在這個http://stackoverflow.com/questions/11168916/weak-or-strong-for-iboutlet-and-other/11170327#11170327。它涵蓋了很多方面。 –