我有很多用户报告在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。一些崩溃的应用程序已在一年多时间内更新,并且在更新之前工作正常。
任何人对可能导致这种情况的原因有任何想法?
答案 0 :(得分:1)
最后发现,出于某种原因,在iOS升级期间,“en-US”语音有时会从设备中删除。我抓住了遇到此问题的设备,并查询列出系统中所有声音的阵列返回除“en-US”之外的所有声音的列表。
我通过遍历数组来解决我的问题,看看“en-US”是否可用。如果是,我把它设置为话语的声音。如果没有,我会把声音留空。