【发布时间】:2015-01-15 13:23:47
【问题描述】:
我使用基于视图的应用模板创建了一个新的 Xcode 项目。在视图控制器的 .m 中,我重写了这个:
// 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(@"initWithNibName...");
}
return self;
}
- (id)init {
NSLog(@"initWithNibName...");
return [super init];
}
但是,我从来没有得到那个 NSLog。这也是我在其他项目中的经验。这个方法永远不会被调用。甚至没有来自 NSObject 的 -init。
视图控制器是在 XIB 文件中创建的。 Nib 加载系统如何在没有任何初始化的情况下实例化此类?
为什么?还有什么可以替代 -loadView 和 -viewDidLoad?
远离 XIB 文件的另一个重要原因?
【问题讨论】: