如何解决UIPrintInteractionController在iOS 14中崩溃,在iOS 13上运行良好试图从线程获取网络锁
@objc func printData(){
let pic = UIPrintInteractionController.shared
let printInfo : UIPrintInfo = UIPrintInfo(dictionary: nil)
printInfo.outputType = UIPrintInfo.OutputType.general
pic.printInfo = printInfo
pic.printFormatter = self.webViewPrint.viewPrintFormatter()
pic.present(animated: true,completionHandler: nil)
}
目前运行正常,当我关闭该视图控制器时应用崩溃。
“ webViewPrint”是一个UIWebView
应用崩溃日志: 2020-09-25 12:20:19.399922 + 0530 void _WebThreadLock(),0x13b425020:试图从除主线程或Web线程之外的其他线程获取Web锁。这可能是从辅助线程调用UIKit的结果。现在崩溃了...
解决方法
尝试
DispatchQueue.main.async {
pic.present(animated: true,completionHandler: nil)
}
从该错误来看,似乎UI内容正在辅助线程上发生,在主线程上进行操作应该可以解决该问题。
,虽然很难确定该崩溃,但我建议在提交给AppstoreConnect时遵循苹果公司非常激进的警告消息:
aquilas-iMac:vscod1 amora$ yarn
yarn install v1.22.10
$ node build/npm/preinstall.js
[1/4] ? Resolving packages...
[2/4] ? Fetching packages...
info vscode-windows-ca-certs@0.2.0: The platform "darwin" is incompatible with this module.
info "vscode-windows-ca-certs@0.2.0" is an optional dependency and failed compatibility check. Excluding it from installation.
info vscode-windows-registry@1.0.3: The platform "darwin" is incompatible with this module.
info "vscode-windows-registry@1.0.3" is an optional dependency and failed compatibility check. Excluding it from installation.
info windows-foreground-love@0.2.0: The platform "darwin" is incompatible with this module.
info "windows-foreground-love@0.2.0" is an optional dependency and failed compatibility check. Excluding it from installation.
info windows-mutex@0.3.0: The platform "darwin" is incompatible with this module.
info "windows-mutex@0.3.0" is an optional dependency and failed compatibility check. Excluding it from installation.
info windows-process-tree@0.2.4: The platform "darwin" is incompatible with this module.
info "windows-process-tree@0.2.4" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] ? Linking dependencies...
warning " > gulp-tsb@4.0.5" has incorrect peer dependency "typescript@^3.0.0".
[4/4] ? Building fresh packages...
[1/15] ⢀ keytar
[2/15] ⢀ native-is-elevated
[3/15] ⢀ native-keymap
[4/15] ⢀ native-watchdog
error /Users/amora/Documents/GitHub/vscod1/node_modules/native-watchdog: Command failed.
Exit code: 1
Command: node-gyp rebuild
Arguments:
Directory: /Users/amora/Documents/GitHub/vscod1/node_modules/native-watchdog
Output:
gyp info it worked if it ends with ok
gyp info using node-gyp@5.1.0
gyp info using node@12.19.0 | darwin | x64
gyp info find Python using Python version 2.7.16 found at "/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python"
gyp info spawn /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
gyp info spawn args [
gyp info spawn args '/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',gyp info spawn args 'binding.gyp',gyp info spawn args '-f',gyp info spawn args 'make',gyp info spawn args '-I',gyp info spawn args '/Users/amora/Documents/GitHub/vscod1/node_modules/native-watchdog/build/config.gypi',gyp info spawn args '/usr/local/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',gyp info spawn args '/Users/amora/Library/Caches/node-gyp/9.2.1/include/node/common.gypi',gyp info spawn args '-Dlibrary=shared_library',gyp info spawn args '-Dvisibility=default',gyp info spawn args '-Dnode_root_dir=/Users/amora/Library/Caches/node-gyp/9.2.1',gyp info spawn args '-Dnode_gyp_dir=/usr/local/lib/node_modules/npm/node_modules/node-gyp',gyp info spawn args '-Dnode_lib_file=/Users/amora/Library/Caches/node-gyp/9.2.1/<(target_arch)/node.lib',gyp info spawn args '-Dmodule_root_dir=/Users/amora/Documents/GitHub/vscod1/node_modules/native-watchdog',gyp info spawn args '-Dnode_engine=v8',gyp info spawn args '--depth=.',gyp info spawn args '--no-parallel',gyp info spawn args '--generator-output',gyp info spawn args 'build',gyp info spawn args '-Goutput_dir=.'
gyp info spawn args ]
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release','-C','build' ]
CXX(target) Release/obj.target/watchdog/src/watchdog.o
In file included from ../src/watchdog.cc:9:
/Users/amora/Library/Caches/node-gyp/9.2.1/include/node/uv.h:24:2: error: unterminated conditional directive
#ifndef UV_H
^
In file included from ../src/watchdog.cc:18:
In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/unistd.h:72:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/unistd.h:132:1: error: cannot combine with previous 'type-name' declaration specifier
struct accessx_descriptor {
^
In file included from ../src/watchdog.cc:9:
/Users/amora/Library/Caches/node-gyp/9.2.1/include/node/uv.h:473:1: warning: declaration does not declare anything [-Wmissing-declarations]
UV_EXTERN uv_buf_t
^~~~~~~~~~~~~~~~~~
/Users/amora/Library/Caches/node-gyp/9.2.1/include/node/uv.h:47:20: note: expanded from macro 'UV_EXTERN'
# define UV_EXTERN __attribute__((visibility("default")))
^
../src/watchdog.cc:82:5: error: use of undeclared identifier 'uv_thread_create'
uv_thread_create(&w_monitor_thread_id,w_monitor,NULL);
^
../src/watchdog.cc:121:41: error: expected '}'
NAPI_MODULE(NODE_GYP_MODULE_NAME,Init);
^
/Users/amora/Library/Caches/node-gyp/9.2.1/include/node/uv.h:27:12: note: to match this '{'
extern "C" {
^
1 warning and 4 errors generated.
make: *** [Release/obj.target/watchdog/src/watchdog.o] Error 1
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
gyp ERR! stack at ChildProcess.emit (events.js:314:20)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
gyp ERR! System Darwin 19.6.0
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Users/amora/Documents/GitHub/vscod1/node_modules/native-watchdog
我一直在推迟迁移,并且在iOS14中也遇到了完全相同的崩溃。从ITMS-90809: Deprecated API Usage
App updates that use UIWebView will no longer be accepted as of December 2020.
Instead,use WKWebView for improved security and reliability.
Learn more (https://developer.apple.com/documentation/uikit/uiwebview).
-> UIWebView
转换所有内容对我来说很成功。
因此,对于您的代码,您只需要交换webViewPrint实例,就不再会看到崩溃。
WKWebView
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。