2011-06-23 79 views
7

我一直在學習coredata,通過檢查基於xcode導航控制器模板的「use coredata」來製作很多簡單的測試應用程序。awakeFromNib的好處?

應用程序委託中的awakeFromNib方法一直是我的問題的來源,因爲我將其他視圖添加到控制器並更改加載順序,以便RootViewController可能是第二個或第三個選擇。

我已經知道了awakeFromNib在做什麼,並且我已經刪除了它,所以應用程序委託不再綁定到任何特定的視圖。 (所以當我想要加載RootViewController時,我將它作爲常規視圖加載,並使用它自己的viewDidLoad爲視圖初始化managedObjectContext)。

我的問題:在AppDelegate中使用awakeFromNIb會有性能提升或其他好處嗎?還是僅僅是通過viewDidLoad方法做同樣事情的另一種方式?

回答

5

所有的方法在不同的時間和不同的情況下都會觸發。

awakeFromNib在從磁盤加載與類關聯的nib文件時調用。任何可以擁有筆尖的班級都可以使用它。 viewDidLoad僅供視圖控制器使用。它通常在從筆尖加載時調用,但也可以通過在內存中創建的視圖調用(非常罕見)。

在任何一種情況下,只會將功能放在您只想運行一次該實例首先被加載。例如。一個常見的nubie錯誤是將代碼放在viewDidLoad中,每次出現視圖時都需要運行該代碼。與主視圖一樣,打開詳細信息視圖,然後在細節視圖關閉時重新顯示。如果主視圖的代碼在viewDidLoad中,它將僅在主視圖第一次加載時運行,但不會在主視圖消失並重新出現的任何後續時間運行。

您通常不會初始化任何其他視圖,或者在應用程序委託從nib喚醒時執行大部分任務。這通常在applicationDidFinishLaunching中執行。

+0

好的,謝謝。我只是擔心擺脫應用程序委託中的awakeFromNib並將初始化代碼移動到viewDidLoad可能會降低性能。 – nick