我似乎无法使用来自父类的正确初始化程序从我的应用程序中扩展cocoapod ra1028 / Former中的类。这是为什么?
见下面的情况分为pod和我的应用程序代码(ExtendedFormLabelHeaderView类)中的代码
// ra1028/Former cocaopod class signatures
public protocol FormableView: class {}
public protocol LabelFormableView: FormableView {}
open class FormHeaderFooterView: UITableViewHeaderFooterView {
required public init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override public init(reuseIdentifier: String?) {
super.init(reuseIdentifier: reuseIdentifier)
}
}
open class FormLabelHeaderView: FormHeaderFooterView, LabelFormableView {
required public init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override public init(reuseIdentifier: String?) {
super.init(reuseIdentifier: reuseIdentifier)
}
}
// my app code
open class ExtendedFormLabelHeaderView: FormLabelHeaderView {
required public init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override public init(reuseIdentifier: String?) {
super.init(reuseIdentifier: reuseIdentifier)
}
}
在游乐场的代码上运行。
但是在我的工作区中将其作为设置运行(来自Swift 2.2,转换为Swift 3),它首先会抱怨 ExtendedFormLabelHeaderView 的override init(reuseIdentifier: String?)
初始化程序不公开(很可能是因为它无法找到需要覆盖的初始化程序?)然后我最终得到these error messages:
Initializer does not override a designated initializer from its superclass.
Argument labels '(reuseIdentifier:)' do not match any available overloads
其他一些注意事项:
override
关键字会对第一行产生不同的错误:Initializer 'init(reuseIdentifier:)' with Objective-C selector initWithReuseIdentifier:' conflicts with implicit initializer 'init(reuseIdentifier:)' from superclass