为什么我的UIViewController初始化程序从未调用过?

don*_*ile 0 iphone

我从一个新模板中创建了一个基于视图的项目.有一个用XIB创建的UIViewController.

在实现中我取消注释并添加了一个NSLog.但这从未被称为:

// The designated initializer. Override to perform setup that is required before the view is loaded.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {
        // Custom initialization
        NSLog(@"nib");
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

因为它是从nib/xib初始化的,所以应该确实调用,对吧?但事实并非如此.当我把它放在viewDidLoad中时,我得到一条NSLog消息.

ken*_*ytm 5

从nib/xib初始化对象时,该-initWithCoder:方法将用于初始化.

-initWithNibName:… 永远不会在unarchiving中使用.