在OC中我们直接复写 init 方法
- (instancetype)initWithLeftViewController:(UIViewController *)leftViewController contentViewController:(UIViewController *)contentViewController {
if (self = [super init]) {
// Coding
}
return self;
}
在Swift中这样写
required init(leftViewController: UIViewController, contentViewController: UIViewController) {
super.init(nibName: nil, bundle: nil)
// Coding
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
使用override的话会报错
Initializer does not override a designated initializer from its superclass
不写required init?(coder: NSCoder) 的话也会报错。
如果是指定的初始化就用这个方法的话,建议添加required修饰符。
本文对比了Objective-C与Swift中初始化方法的实现方式。在OC中直接复写init方法,而在Swift中需要使用required关键字,并且必须实现从NSCoder初始化的方法。如果不正确地使用override可能会导致编译错误。

827

被折叠的 条评论
为什么被折叠?



