Initializer不会覆盖其超类Swift 2.0中的指定初始值设定项

时间:2015-11-15 09:42:05

标签: ios swift user-interface speech avspeechsynthesizer

通过这个appcoder教程building a text to speech app tutorial工作并遇到一个快速的1.2-> swift 2.0功能。

演示项目中有一个类... IOS 10.11.1下的Xcode 7.1.1不喜欢,给我错误。 “initialiser不会在覆盖init()语句上覆盖其超类的指定初始化程序”,后跟错误“必须调用超类UISlider的指定初始化程序”。

好的,对Swift来说相当新鲜;而且我开始修复这个问题对我来说有点迷失。

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
}

}

此代码段应该说什么?

1 个答案:

答案 0 :(得分:4)

由于m1没有将UISlider定义或继承为指定的初始值设定项,因此您无法从子类init()调用它。

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 } } 的初始化分解出去并继承所有sliderIdentifier的初始值设定项:

UISlider

有关详细信息,请参阅The Swift Programming Language中标题为“指定初始值设定项和便捷性初始化程序”的部分。

相关问题