2011-03-14 71 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

相关问题