Если вы удалите соответствие протокола и просто условно приведете speechSynth.delegate = self as? NSSpeechSynthesizerDelegate
, он скомпилируется, но это установит delegate
в nil
во время выполнения, даже , если вы реализуете все необходимые методы .
Вы должны принять NSSpeechSynthesizerDelegate
, чтобы это сработало. Конечно, это также в ваших интересах, потому что компилятор Swift затем предупредит вас, если вы пропустили какие-либо обязательные методы.