Sea*_*bet 4 xcode uiviewcontroller ios swift
考虑以下具有委托的控制器类:
@objc protocol FooControllerDelegate {
}
@objc class FooController: UIViewController {
var delegate: FooControllerDelegate
init(delegate: FooControllerDelegate) {
self.delegate = delegate
super.init(nibName: nil, bundle: nil)
}
// TODO: How do we forbid this init?
required init(coder aDecoder: NSCoder) {
// TODO: Fails to compile.
super.init(coder: aDecoder)
}
}
Run Code Online (Sandbox Code Playgroud)
是否有任何方法禁止使用-initWithCoder:等效项,而不会使委托隐式解包,并assert(false)在方法中放置?
理想情况下,根本不需要编写init(coder:)每个子类,并且隐式禁止它.
覆盖方法必须是可访问的,因为它是封闭类型
init(coder:)每次添加自定义初始化程序时避免空置覆盖,那么请考虑convenience关键字.Swift的安全范例假定该类要么添加"额外的"init,要么必须修改所有必需的初始化程序的行为.| 归档时间: |
|
| 查看次数: |
1026 次 |
| 最近记录: |