2011-03-14 66 views
5

根據從init到viewDidLoad的視圖控制器如何加載到內存中,全序列事件是什麼?viewDidLoad可以在viewController的'init'完全執行之前調用嗎?

如果你做這樣的事情:

TabControllerClass *cc = [[TabControllerClass alloc] initWithCustomData:something]; 

可以在類的viewDidLoad獲得到達定製init方法,「initWithCustomData」結束之前調用?

- (id)initWithCustomData:(NSString *)something 
{ 
    if (self = [super init]) 
    { 
     // A bunch of other initialization happens 
    } 

    // Would you reach here before 'viewDidLoad' is invoked? 
    return self; 
} 

其中我的TabControllerClass繼承自UITabBarController。

+0

你是否實現了loadView,或者你使用一個筆尖來構造實際視圖?我不確定它是否有影響,但是如果你使用initWithNib :(你明顯不這樣做),那麼這個問題可能與以編程方式構造視圖的方式不同。 – Robin 2011-03-14 22:20:54

+0

沒有nib加載,這個類繼承自UITabBarController。 – 2011-03-14 22:27:02

+0

呃,你不應該繼承UITabBarController。這也許可以解釋這個問題(正如Alexsander所寫,你的方法可能不是指定的初始化器)。如果您必須覆蓋UITabBarController的某些方法,請使用Categories。 – Robin 2011-03-14 22:29:20

回答

3

我假設沒有。我的意思是,在正確分配和初始化控制器之前,如何調用任何方法?但是,您可能會發現您的-[ControllerClass initWithCustomData]初始化程序不是指定的初始化程序,其中可能是解釋了它未被調用的原因。

+7

想通了。調用[super init]調用initWithNib,然後調用viewDidLoad。 – 2011-03-14 23:08:47

相關問題