2010-12-17 58 views
-1

我一直在努力解決這個問題一段時間,我注意到很多人通過閱讀這裏和其他論壇上的許多帖子來看到同樣的事情。就在今天早上,我意識到我做錯了什麼,我想分享它,以防萬一有人在將來絆倒它。viewWillAppear/viewWillDisappear not called ....我對此的回答

在我的實現中的問題是,在viewDidLoad的視圖控制器(VC1)我將其視圖屬性設置爲一個新的視圖控制器(VC2),迫使我相信框架退出VC1 viewDidLoad沒有達到其結束,因此不調用視圖控制器的結果委託函數:viewWillAppear,viewWillDisappear,viewWillAppear和viewWillDisappear!

所以我的解決方案是延遲創建和設置VC2的所有代碼,從viewDidAppear而不是viewDidLoad調用。如果你從viewWillAppear做到這一點,你將會遇到同樣的麻煩。

希望它可以幫助 AF

+0

你正在設置UIViewController的視圖屬性到另一個UIViewController?那是不對的。視圖屬性應該代表一個UIViewController的視圖。 – vicvicvic 2010-12-17 12:03:02

+0

爲什麼它錯了?我不想創建視圖控制器,然後添加一個新的視圖,我不會再使用它現有的視圖!這將浪費內存。所以我在運行時用另一個視圖重置它。 – Abolfoooud 2010-12-17 12:09:26

+0

您確定您設置的延遲時間是否足夠,並且操作不會超過您設置的延遲時間? – EmptyStack 2010-12-17 12:13:56

回答

1

你爲什麼要費那麼這一切麻煩只是爲了節省一個UIViewController的記憶?

sizeof(UIViewController)給出132個字節。即使知道一個視圖控制器將創建一個公平的少數支持對象,所以它會佔用更多的內存,而不是過早優化的一個很好的例子。

我想給它一個公平的機會,該代碼的解決方案,你已經走了遺囑:

(一)泄露在邊緣的情況下內存上進一步更新 (二)未能到iOS (C)是(d)在超過幾周的時間內自行調試是一場噩夢

爲什麼不使用提供的框架編寫應用程序並對其進行配置 - 如果這個微小的內存量導致您的問題罰款,實施您的解決方案。如果不是,請保持獨立。