考虑以下带有委托(delegate)的 Controller 类:
@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)
}
}
有什么方法可以禁止使用等效的
-initWithCoder:
,而不必使委托(delegate)隐式地展开,并且在方法中放置一个assert(false)
?理想情况下,根本不需要为每个子类编写
init(coder:)
并隐式禁止它。 最佳答案
init(coder:)
,请考虑使用convenience
关键字。 Swift的安全范例假定该类要么添加了“其他” init,要么必须修改所有必需的初始化程序的行为。 "Automatic Initializer Inheritance"
关于ios - Swift-如何禁止初始化程序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28644505/