6

它是安全的假設一個屬性,即fetchedResultsControllerchatViewControllerUITableViewController一個子類的實例,總是nilviewDidLoad被調用時,假設它設置爲nilviewDidUnload?唷!何時調用viewDidLoad?

如果是這樣,那麼我看不到立即需要重新定義訪問器函數,就像在Xcode示例應用程序CoreDataBooks中一樣。我寧願將所有代碼放在viewDidLoad而不是放在一個單獨的函數中,因爲這是我將使用它的唯一地方。

回答

3

viewDidLoad在加載視圖後調用。 fetchedResultsController是否爲零取決於viewController是如何初始化的。例如,創建detailViewController時,你可以設置其fetchedViewControllerviewDidLoad之前被稱爲:

RecipeDetailViewController *detailViewController = [[RecipeDetailViewController alloc] initWithStyle:UITableViewStyleGrouped]; 
    detailViewController.fetchedResultsController = fetchedResultsController; 

    [self.navigationController pushViewController:detailViewController animated:animated]; 
    [detailViewController release]; 

這就是說,然後viewDidUnload nil'ing fetchedResultsController將確保它是零。

+0

很酷。謝謝。我想你那裏的最後一句話已經回答了我的問題。這很好知道! :) – ma11hew28 2010-10-16 23:54:04

2

你必須假設viewDidLoad可以被多次調用。如果發送了內存警告,您的視圖控制器將從內存中卸載該視圖,並在下次需要時調用viewDidLoad。

+2

要明確,'viewDidLoad'不會被連續調用多次。 – 2010-10-16 20:24:24

+2

這是有道理的。所以,我可以假設,如果我在'viewDidLoad'中設置'fetchedResultsController',並在'viewDidUnload'中設置'nil',那麼我不會不必要地在'viewDidLoad'中再次設置它?換句話說,在調用'viewDidLoad'之前總是調用'viewDidUnload',是否正確? – ma11hew28 2010-10-16 23:53:14

3

的viewDidLoad在這些Secnarion叫: -

1.當我們在創建它通過賽格瑞或stoary板ID對象後推視圖控制器。

2.it在應用程序中創建實例更多時間並且一次又一次地推送它的情況下調用多於一個。例如: - 如果實現像coaursal(在滾動期間需要額外的控制器),就像它是因此需要多次調用viewDidLoad。

3.it當所有內存實例(uiviewcontroller及其子類實例化)時調用,這意味着當我們的視圖準備好在內存中加載地址時。

4.只記錄子類控制器對象被創建..在正常Secnarion期間,從未實例化過類對象。

0

viewDidLoad僅當第一次實例化視圖時被調用。如果每次在應用程序中都不重新創建視圖控制器,則只會調用一次該視圖控制器(如果發生內存警告並再次調用視圖,則會再次調用該視圖)。