【发布时间】:2015-08-04 22:11:14
【问题描述】:
我在 Swift 中使用AVSpeechSynthesizer() 为视障用户阅读一些方向和航向说明。
然而,一段时间后,应用程序崩溃了:
-[AXSpeechAction retain]: message sent to deallocated instance 0x1c37e2b0.
当然该类不包含在我的项目中,我什至不知道是谁创建和删除了它。
【问题讨论】:
-
感谢指正,因为这个题目比较新,请撤掉-2评价。
-
实际上我在这个特定文件中没有闭包。当然,一种选择是使用 UIAccessibilityAnnouncementNotification,就像我在其他任何地方所做的那样,但在这种情况下,我会将不同口语句子之间的任何联系交给系统,就此而言,我不知道在系统运行时通知到达时会发生什么播放上一个。
-
我的测试表明所有新消息都会被丢弃,而不是像在 AVSpeechSynthesizer 中那样排队。当然,如果我找不到更好的解决方案,我会改用那个。事实上,其他用户也可以使用这些说明,似乎不会崩溃,但这可能取决于我对任何一个用户所做的连续请求的绝对数量。
-
您可以使用
UIAccessibilityAnnouncementDidFinishNotification在您发布的公告发言结束时收到通知,这样您就知道在前一个发言结束之前不要提交另一个公告。并不是说以这种方式实现它很容易,但这是可能的。
标签: ios swift voiceover avspeechsynthesizer