我的應用程序支持打印。如果用戶取消打印機選項模態視圖控制器,應用程序的某個地方崩潰在蘋果的代碼的_WebTryThreadLock(bool) ... Tried to obtain the web lock from a thread other than the main thread or the web thread. This may be a result of calling to UIKit from a secondary thread. Crashing now...
取消打印活動後應用程序崩潰
我已經收窄,下面的代碼的消息:
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)
如果我從刪除itemProvider
陣列,activityItems
,崩潰消失。在我的應用程序中,我有一個UIActivityItemProvider
的自定義子類,但即使我沒有自定義它使用超類,我也會發生這種崩潰。
要進行復制,請使用單個按鈕創建單個視圖項目,然後將該按鈕鏈接到使用上述代碼片段作爲其主體的操作。然後點擊按鈕,點擊活動視圖控制器中的打印圖標,然後點擊打印機選項視圖控制器中的取消按鈕。崩潰。有任何想法嗎?
遵循Xcode 8.1中的步驟,使用iPhone目標,並在9.3.5設備上運行,我沒有看到崩潰。 –
感謝您檢查此事,Phillip。我使用Xcode 8.1和iPhone 7模擬器,部署目標設置爲10.1。當我將其改爲9.3時,我仍然每次都會在模擬器中發生崩潰。我嘗試過使用我的設備(運行10.1.1的iPhone 6 Plus),並且崩潰並不總是發生 - 這是間歇性的。如果我將部署目標設置爲10.1,那麼每次我的設備都會崩潰,但是如果將部署目標設置爲9.3,則不會總是發生。在我的發貨應用中,用戶在運行10.1.1的iPhone和iPad上遇到此故障。也許這是一個iOS錯誤,我需要提交一個雷達。 –
我沒有很好的想法,但我確實發現了一個奇怪的觀察。如果我爲活動控制器分配了完成處理程序('UIActivityViewControllerCompletionWithItemsHandler'),它將在模擬程序**中第一次通過序列**停止崩潰。但是,如果我重複UI操作而不重新啓動...崩潰。 –