【发布时间】:2018-01-31 14:39:42
【问题描述】:
我正在为 Text2Speech 创建一个类,为此,我正在创建一个 Singleton 对象以在我的项目的许多地方将其用作单个对象,但出现以下错误:
我的代码:
static let sharedInstance = Text2Speech()
或者
static let sharedInstance : Text2Speech = {
let instance = Text2Speech()
return instance
}()
我遇到的错误:
不能在属性初始化器中使用实例成员“Text2Speech”; 属性初始化器在“self”可用之前运行
我在很多地方都在为 SingleTon 对象做同样的声明,但只有在这个类中,我得到了上述错误。
我已经检查了this question thread,但没有找到任何解决方案。
那堂课里有些东西连线或弄乱了。
编辑:
Text2Speech 类:
class Text2Speech: NSObject, AVSpeechSynthesizerDelegate {
var delegate: Text2SpeechDelegate?
var utteranceCount : Int
var isMale : Bool
let synth = AVSpeechSynthesizer()
static let sharedInstance = Text2Speech()
// static let sharedInstance : Text2Speech = {
// let instance = Text2Speech()
// return instance
// }()
override init() {
self.utteranceCount = 0;
self.isMale = false
super.init()
synth.delegate = self
}
func Text2Speech(_ text: String){
utteranceCount += 1
let myUtterance = AVSpeechUtterance(string: text)
myUtterance.postUtteranceDelay = 0.005
myUtterance.rate = 0.5
myUtterance.pitchMultiplier = 1.0
if self.isMale{
myUtterance.voice = AVSpeechSynthesisVoice(language:"en-GB")
}
synth.speak(myUtterance)
}
func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, didStart utterance: AVSpeechUtterance) {
delegate?.Text2SpeechConvertor(synthesizer, didStart: utterance)
}
func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, didFinish utterance: AVSpeechUtterance) {
utteranceCount -= 1
let seriouslyFinished = utteranceCount==0 ? true:false
delegate?.Text2SpeechConvertor(synthesizer, didFinish: utterance, seriouslyFinished: seriouslyFinished)
}
}
谁能帮我解决这个问题?
提前致谢。
【问题讨论】:
-
需要更多上下文。
class Text2Speech { static let sharedInstance = Text2Speech() }编译没有问题。 -
@MartinR 我已经添加了整个 Text2Speech 类,您可以查看我更新的答案吗?
标签: ios swift swift3 singleton