ViewController初始化?

时间:2010-03-26 17:41:41

标签: iphone objective-c cocoa-touch

我刚刚注意到我的ViewController在启动时没有调用init(见下文)。

-(id)init {
    self = [super init];
    if(self) {
        NSLog(@"_init: %@", [self class]);
        otherStuff...
    }
    return self;
}

是否有这样的原因,或者它被viewDidLoad

取代
-(void)viewDidLoad {
    otherStuff ..
    [super viewDidLoad];
}
欢呼加里

4 个答案:

答案 0 :(得分:16)

它不会被viewDidLoad取代。只是init没有被initWithNibName:bundle:调用。

我只需在viewDidLoad中编写设置代码。

答案 1 :(得分:5)

如果您正在从故事板初始化视图控制器,则可以使用:

- (instancetype)initWithCoder:(NSCoder *)coder
{
    self = [super initWithCoder:coder];
    if (self) {
        // do init here
    }
    return self;
}

答案 2 :(得分:3)

通常使用awakeFromNib。

答案 3 :(得分:0)

    如果你在代码中创建对象,
  • (void)init工作正常,但你必须确保它是你调用的对象。对模板化的initWithNibName:bundle:方法进行充实,然后调用另一个方法没有任何好处。