Die Frage ist wirklich einfach. Ich weiß Retain-Zyklen zu erkennen, aber ich möchte wissen, ob ich im nächsten Beispiel Zyklus behalten habe.Swift - Zyklus nicht mit Selbst beibehalten?
MainManager.sound.player.speak("1", didFinish: {
MainManager.sound.player.speak("3", didFinish: {
MainManager.sound.player.speak("4", didFinish: {
})
})
})
MainManager
ist eine Singleton-Klasse, die sound
in einem starken ref zu halten, und sound
halten player
Klasse in stark ref.
Die Umsetzung sprechen()
private var speechSynthesizer:AVSpeechSynthesizer?
private var speechDidFinishCompletion:CompletionVoid? = nil
func speak(_ stringToSpeak:String, didFinish:CompletionVoid? = nil)
{
if speechSynthesizer == nil
{
speechSynthesizer = AVSpeechSynthesizer()
speechSynthesizer?.delegate = self
}
speechDidFinishCompletion = didFinish
let speechUtterance = AVSpeechUtterance(string: stringToSpeak)
speechSynthesizer!.speak(speechUtterance)
}
func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, didFinish utterance: AVSpeechUtterance)
{
speechDidFinishCompletion?()
}
Könnten Sie die Implementierung der 'speak' Methode posten? –
Zyklus mit was genau beibehalten? Nach dem Aussehen der Dinge, beziehen Sie sich nur auf statische Mitglieder. Es wäre sehr hilfreich, wenn Sie mehr Kontext bereitstellen könnten. – Hamish
i'v nur die Frage bearbeiten können Sie einen Blick pls? –