通过这个appcoder教程building a text to speech app tutorial并运行到swift 1.2->swift 2.0功能。
演示项目中有一个类。。。iOS10.11.1下的Xcode7.1.1不喜欢它,这就给了我一个错误。”initialiser不会在override init()语句中重写其超类中指定的initialiser,然后出现错误“必须调用超类UISlider的指定initialiser”。
好吧,对斯威夫特来说还不太熟悉;我开始着手解决这个问题的时候,我有点不知所措。

class CustomSlider: UISlider {

var sliderIdentifier: Int!

override init() { <--- error here
    super.init()  <--- error here

    sliderIdentifier = 0
}


required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)

    sliderIdentifier = 0
}

}

这段代码应该怎么说?

最佳答案

由于UISlider没有定义或继承指定的初始值设定项,因此不能从子类init()调用它。

class CustomSlider: UISlider {

    var sliderIdentifier: Int!

    required init() {
        super.init(frame: CGRect.zero)
        sliderIdentifier = 0
    }


    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        sliderIdentifier = 0
    }

}

在这种情况下,您可以忽略init的初始化,而只继承所有sliderIdentifier的初始化器:
class CustomSlider: UISlider {

    var sliderIdentifier: Int! = 0

}

有关更多信息,请阅读The Swift Programming Language中标题为“指定初始值设定项和方便初始值设定项”的部分。

关于ios - 初始化程序不会覆盖其父类(super class)Swift 2.0中的指定初始化程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33718285/

10-16 02:26