2009-08-02 42 views
0

(只要你知道我學習開發iPhone,而無需interfacae建設者)iPhone開發 - 多視圖應用延遲加載

我編碼我的第一個多視圖的應用程序,其中有一個根視圖控制器和兩個其他viewcontroller和根視圖控制器使用延遲加載,所以當viewDidLoad,它創建第一個視圖控制器,並將其視圖添加到子視圖,但不創建另一個,直到它需要。但是,在第二個加載後,他們都呆在那裏直到應用程序結束(除非它收到內存警告)。

所以我想知道:當用戶切換兩個其他視圖,我應該卸載另一個正在被刪除(通過設置爲零 - 它的一個保留屬性)?所以每次用戶點擊按鈕,當前viewcontroller被卸載(從超級視圖中刪除後),下一個被加載並添加爲子視圖?

所以,這是正確的事情,或者它是正確的,但只有當應用程序有很多意見,而我的複雜程度不足以證明這樣做,或者它是不好的,我應該只是讓didReceiveMemoryWarning照顧它(在didReceiveMemoryWarning我設置視圖控制器,目前不顯示爲零)?

回答

1

答案真的取決於。通常情況下,您應該釋放並設置爲無顯示的視圖,但如果用戶要頻繁切換視圖,則可能需要保留隱藏的視圖(緩存)。

您並不是真的希望您的應用將用戶的手機推送到didReceiveMemoryWarning。當您收到該警告時,手機中會發生其他事情,可能導致您的應用程序在iPhone轉儲緩存的Safari頁面,緩存的UIImageView對象等時凍結一段時間...此過程對於最終用戶和您的應用程序可能並不像應該那樣流暢。

重要的是要記住,有些用戶可能會使用第一代iPhone,iPod Touch和3G,因此他們不會擁有額外的3GS內存。這就是說,我錯在保守的內存方面,所以我會釋放和取消視圖,然後在用戶想要看到它時重新實例化它。由於didReceiveMemoryWarning,您的分配視圖與系統清理的影響通常會比應用程序的用戶少得多。

+0

好的,謝謝。我的意思是讓didReceiveMemoryWarning處理它,如果說到這一點,不像這個應用程序可以。 – mk12 2009-08-02 04:16:17