gpt4 book ai didi

ios - 取消打印事件后应用程序崩溃

转载 作者:搜寻专家 更新时间:2023-10-31 22:12:36 26 4
gpt4 key购买 nike

我的应用支持打印。如果用户取消 Printer Options 模态视图 Controller ,应用程序会在 Apple 代码的某处崩溃,并显示一条消息 _WebTryThreadLock(bool) ... Tried to obtain the web lock from a thread other than main thread or the web thread .这可能是从辅助线程调用 UIKit 的结果。现在崩溃...

我已将其缩小为以下代码:

let itemProvider = UIActivityItemProvider(placeholderItem: "message")
let activityItems = [ itemProvider,
UIMarkupTextPrintFormatter(markupText: "test") ]
let activityController = UIActivityViewController(activityItems: activityItems,
applicationActivities: nil)
self.present(activityController, animated: true, completion: nil)

如果我从 activityItems 数组中删除 itemProvider,崩溃就会消失。在我的应用程序中,我有一个 UIActivityItemProvider 的自定义子类,但即使我在没有自定义的情况下使用父类(super class),我也会遇到此崩溃。

要复制,请创建一个带有单个按钮的单 View 项目,并将该按钮链接到一个使用上面的代码片段作为其主体的操作。然后点击按钮,点击事件 View Controller 中的打印图标,然后点击打印机选项 View Controller 中的取消按钮。碰撞。有什么想法吗?

最佳答案

这几乎可以肯定是 Apple 代码中的错误。

经过调试,我得出的结论是它与UIMarkupTextPrintFormatter 实例的释放有关。

因此,作为一种解决方法,您可以将格式化程序作为类中的一个属性:

var printFormatter = UIMarkupTextPrintFormatter(markupText: "test")

然后像这样使用它:

let itemProvider = UIActivityItemProvider(placeholderItem: "message")
let activityItems = [itemProvider, self.printFormatter]
let activityController = UIActivityViewController(activityItems: activityItems, applicationActivities: nil)
self.present(activityController, animated: true, completion: nil)

只要该属性由您的实例强烈持有并且未被释放,它就不会崩溃。

关于ios - 取消打印事件后应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40998485/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com