2013-01-04 95 views
2

我有一個故事板6視圖控制器及其相應的意見。我做不是有任何導航控制器與這6個視圖控制器相關聯。故事板+ Modal塞格+內存

要從一個視圖控制器移動到另一個視圖控制器,輕掃手勢識別器將與模態漸變一起使用。所有的視圖控制器都有替換1,有時甚至是兩個滑動手勢模式段落到其他視圖控制器。

我的問題是,我需要擔心內存嗎?當我滑動這些視圖控制器將無限添加到內存最終導致應用程序崩潰?

一個例子可能是:說我在第一個VC中,然後向右滑動到第二個VC,然後再次滑動到右到第三個VC,然後向左滑動兩次以返回到第一個VC。這個:

內存:第一個VC,第二個VC,第三個VC,第二個VC的另一個副本,第一個VC的另一個副本?

我知道這似乎是一個愚蠢的問題,但因爲我只是前幾天開始編程我很擔心我會遇到內存問題。

我將不勝感激您的想法和任何可能有用的鏈接,以引用此問題。

回答

1

你有一個很好的問題,這取決於你如何創建和解僱你的視圖控制器。通常,像您提到的設計將使用內置控制器(如UINavigationController或UIPageViewController)或可能使用滾動視圖來構建。

如果您是「呈現」新的視圖控制器,那麼您需要解僱以刪除它們。如果你不解僱,那麼你查看控制器將堅持。

如果您使用的是segue,請記住每個segue會創建一個新實例。

如果你的邏輯通常說 - 向右滑動即可:新模式SEGUE,向左滑動:解僱,那麼你將被清理,當您去。這可以工作,如果它確定每個正確的滑動創建一個新的實例。

如果需要六個視圖控制器留在記憶的時候,你可能想看看使用您自己的解決方案一個pageViewController或滾動。我已經看到了一些很好的解決方案,例如使用滾動視圖描述。

如果你想使用一個滾動視圖,基本上你會克里特島的陣列,裝入您的視圖控制器的六個實例的數組,然後加載水平滾動條滾動視圖。添加左/右滑動手勢識別器和邏輯,你有一個很好的水平頁面滾動。

這是一個非常好的參考和教程,似乎解決您所描述的解決方案。 http://www.wannabegeek.com/?p=168

祝你好運,新年快樂。

+0

感謝非常有幫助和全面的答案!我實際上有兩個滑動手勢與2模態segue ..實際上它向右滑動:新的模態賽格,向左滑動(回去):新的模態賽格,這裏是我的記憶快速上升的地方。 – jacobronniegeorge

+1

檢查我包括的項目。如果你的應用只有6個選項,你可以將它們全部實例化,並在需要時將它們保存在內存中 - 它不是很多,基本上這就是TabBar控制器所做的。理想情況下,只有在需要時纔會初始化它們。您可能希望查看委託模式 - 因此您可以輕鬆解除視圖控制器,否則您將繼續存在內存問題。 – CocoaEv

0

只要你不保持到視圖(或其子視圖,如按鈕......)強引用,他們將在需要時釋放。