可以在viewController的'init'完全执行之前调用viewDidLoad吗?

Jon*_*son 5 iphone objective-c

关于视图控制器如何从init加载到内存到viewDidLoad的全序列事件是什么?

如果您执行以下操作:

TabControllerClass *cc = [[TabControllerClass alloc] initWithCustomData:something];
Run Code Online (Sandbox Code Playgroud)

可以在到达自定义init方法'initWithCustomData'结束之前调用类的viewDidLoad吗?

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

    // Would you reach here before 'viewDidLoad' is invoked?
    return self;
}
Run Code Online (Sandbox Code Playgroud)

我的TabControllerClass继承自UITabBarController.

Ale*_*ers 3

我想不会。我的意思是,在正确分配和初始化控制器之前如何调用任何方法?但是,您可能会发现您的-[ControllerClass initWithCustomData]初始化程序不是指定的初始化程序,这可以解释为什么它没有被调用。

  • 弄清楚了。调用 [super init] 会调用 initWithNib,后者又会调用 viewDidLoad。 (7认同)