视图控制器初始化?

14
我刚刚注意到我的ViewController在启动时没有调用init方法(见下文)。
-(id)init {
    self = [super init];
    if(self) {
        NSLog(@"_init: %@", [self class]);
        otherStuff...
    }
    return self;
}

这是有原因的,还是被viewDidLoad替换了?

-(void)viewDidLoad {
    otherStuff ..
    [super viewDidLoad];
}

加油,Gary!

4个回答

16

它并不是被viewDidLoad替换。只是因为initWithNibName:bundle:没有调用init方法。

我只是在viewDidLoad中编写了我的设置代码。


谢谢,弗兰克!你的回答对我真的很有用! - fatuhoku

5
如果您的视图控制器是从故事板初始化的,则可以使用以下方法:
- (instancetype)initWithCoder:(NSCoder *)coder
{
    self = [super initWithCoder:coder];
    if (self) {
        // do init here
    }
    return self;
}

3

awakeFromNib是常用的方法。


0
  • (void) init 在代码中创建对象时运行良好,但您必须确保它是您调用的那个。充实模板化的 initWithNibName:bundle: 方法然后调用其他方法是没有任何好处的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接