2015-06-26 134 views
2

我有很多用戶在iOS 8.3上報告崩潰。崩潰日誌狀態: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代碼時,應用程序停止崩潰。

這次崩潰只發生在一小部分用戶身上,目前我唯一能找到的共同點是他們都在8.3。一些正在崩潰的應用程序在一年內沒有更新,並且在更新之前就可以正常運行。

任何人有什麼想法可能會導致此?

+0

我已經使用AVSpeechSynthesizer,但什麼是TTSSpeechSynthesizer? – Andreas

+0

我猜這是AVSpeechSynthesizer在底層使用的一些私人框架。它不能直接使用。 – bmueller

+0

我不記得我是否有完全相同的問題,但是我知道在每次stopSpeakingAtBoundary之後重新初始化合成器,我爲自己節省了一些痛苦。合成器是不可靠的。 – Andreas

回答

1

最後發現,出於某種原因,在iOS升級過程中,「en-US」語音有時會從設備中刪除。我收到了遇到此問題的設備,並查詢列出系統中所有聲音的陣列返回除「en-US」之外的所有聲音的列表。

我通過遍歷數組來查看「en-US」是否可用,從而解決了我的問題。如果是這樣,我把它作爲話語的聲音。如果不是,我就把聲音留空。

+1

不幸的是,這個問題在iOS 8.4中沒有解決。實際上,iOS 9上的問題實際上還有很多問題,有很多用戶在更新到iOS 9後報告崩潰。如果有人想要欺騙它,我將它作爲雷達22356213提交。 – bmueller

+0

你有沒有發現任何解決辦法?我們在iOS 9 – FeichengMaike

+0

上遇到了很大的問題 - 我認爲是這樣 - 上週我遇到了一個遇到此問題的設備。見上面的編輯。 – bmueller