2009-08-05 58 views
4

我已經有這樣的問題,但我已經刪除它。iPhone Dev - 在哪裏可以放懶惰加載代碼

我有一個非常簡單的應用程序,它有一個根視圖控制器,並在兩個其他視圖控制器視圖之間切換。所以在我的根視圖控制器中,它懶惰地加載了另外兩個視圖控制器的實例。每次按下工具欄中的切換按鈕時,正在顯示的當前視圖控制器(其視圖)被卸載(設置爲零),並且新視圖控制器被加載並添加到子視圖。

由於我加載我的視圖控制器和卸載在特定的時間,惰性加載代碼在getters是非常混亂,因爲我真的不想加載它們,當我使用它們,我需要加載它們之前,所以翻轉動畫看起來不錯。所以我想我想使loadFirstVC和loadSecondVC方法加載視圖控制器。這是一個好主意嗎?

回答

6

延遲加載的主要原因不是延遲加載,肯定會發生。這是延期加載,可能永遠不需要。 (這對數據發生變化時強制重新加載也有好處,但這不是你的問題。)

例如:假設你有一堆關於一個人的數據,包括存儲在外部文件中的照片。但是,只有當用戶轉到子視圖時纔會顯示該照片,那麼爲什麼要從其文件中加載照片,直到您確定子視圖將出現爲止?繁榮,使用延遲加載。

當你知道你想要加載某一段數據的時候,當你加載它的時候不太重要。

它何時重要?那麼,這確實是一個優化問題。有一種說法可能會遇到,如果你還沒有,那麼這是一個很好的時間:「不成熟的優化是所有(編程)邪惡的根源。」

所以問自己兩個問題:

  1. 肯定會需要一段數據?如果否,請繼續使用延遲加載技術。如果是,則轉到問題2.

  2. 加載數據時是否重要? [一個例子是,這是巨大的,我不想加載它,直到我已經卸載了一些東西來騰出空間,如果沒有,將它放在任何有用的地方。如果是...回來再問我們,並提供更多細節。

...我懷疑這不能回答你原來的問題,但它聽起來像你可能會問第一個地方的錯誤問題。道歉,如果我錯了。

+0

我只是想在一些視圖控制器上實現延遲加載 - 但問自己你的兩個問題說服我離開它。 – malaki1974 2013-01-25 12:51:38