初始化程序不会从swift中的超类错误覆盖设计的初始化程序

时间:2015-07-10 02:07:11

标签: ios swift compiler-errors

当我打开已经在Xcode 6.3.2上有快速类的项目时,它显示错误。我希望你能帮我解决这个问题。谢谢。

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:6)

你在这里遇到了一些不同的错误;让我们及时处理它们。

覆盖便利初始化程序
根据Apple的Swift文档:

  

如果编写与超类便捷初始值设定项匹配的子类初始值设定项,则超类便捷初始化程序永远不能由子类直接调用,具体如上面在类类型的初始化程序委派中所述的规则。因此,您的子类(严格来说)不提供超类初始化程序的覆盖。因此,在提供超类便捷初始化程序的匹配实现时,不要编写override修饰符。

请放弃override关键字,然后设置。说到套装......

Swift 1.2中触摸方法的升级界面
iphonedev.tv的Paul SoltSwift 1.2 fixes and breaks a few things: you should be excited!中涵盖了这一点,我建议你阅读整篇文章(更不用说他链接到的发行说明了),但缺点是NSSet已被替换通过本机Set类型。正如他所说:

  

修复:您需要将您的方法签名(即:整个第一行)更新为以下内容:

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {

他还注意到Set上没有任何anyObject()方法,因此您必须使用提供的界面解决这个问题。

希望有所帮助!

答案 1 :(得分:2)

夫特

  

override初始值设定项中不需要convenience关键字,因为你不能覆盖这样的初始值设定项。

修复:删除override关键字。

convenience init() {
    self.init(frame: CGRectZero)
}

此外,init() 是指定的初始化程序(在STBTableViewIndex中),或者不是。如果是,请将convenience override init()替换为required init(),这首先暗示override