AVSpeechSynthesizer导致iOS 8.3崩溃

时间:2015-06-26 17:55:55

标签: ios objective-c avspeechsynthesizer

我有很多用户报告在iOS 8.3上崩溃。崩溃日志指出:

Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'

但是我没有在任何数组中插入任何nil对象。

堆栈跟踪中的最后一次调用是[TTSSpeechSynthesizer _startSpeakingString:orAttributedString:toURL:withLanguageCode:request:error:],所以我认为这可能与AVSpeechSynthesizer有关 - 而且,看到我删除了所有TTS代码后,app停止了崩溃。

此次崩溃只发生在一小部分用户身上,而我迄今为止唯一能够找到的共同点就是他们全部都是8.3。一些崩溃的应用程序已在一年多时间内更新,并且在更新之前工作正常。

任何人对可能导致这种情况的原因有任何想法?

1 个答案:

答案 0 :(得分:1)

最后发现,出于某种原因,在iOS升级期间,“en-US”语音有时会从设备中删除。我抓住了遇到此问题的设备,并查询列出系统中所有声音的阵列返回除“en-US”之外的所有声音的列表。

我通过遍历数组来解决我的问题,看看“en-US”是否可用。如果是,我把它设置为话语的声音。如果没有,我会把声音留空。