【发布时间】:2022-01-07 06:45:36
【问题描述】:
在我更新到 Xcode 13 之前,下面的代码在 Xcode 12 中创建的另一个自定义 UIView 中运行良好。 我创建了这个新的自定义视图,编译器参考了方便的 init 给出了以下矛盾的错误
- 覆盖声明需要一个“覆盖”关键字
- 'init(frame:)' 已被覆盖
为什么 Xcode 13 在新的自定义类中报告此错误,而不是在 Xcode 12 中创建的相同错误?
class OptionsPanel: UIView {
override init(frame : CGRect) {
super.init(frame : frame)
}
convenience init(frame: CGRect) {
self.init(frame: frame)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
【问题讨论】:
-
您是否意识到您已经声明了两个具有完全相同参数列表的初始化程序?我不相信这可以在 Xcode 12 中编译。
-
我和 Sweeper 在一起。这不应该在任何版本的 Xcode 中编译。我想知道为什么它在 Xcode 12 中有效,而不是为什么它在 Xcode 12 中无效。摆脱
convenience init(frame:)。这是一个必需的初始化器,而不是便利的初始化器。 -
是的,同意也不应该用 xcode 12 编译。