我试图从键盘扩展的UIInputViewController调用extensionContext.open(_ URL: URL)
(以打开主机应用程序)。可以毫无问题地引用extensionContext,但是只要我什至没有(实际上没有调用)对open()
的引用,扩展名就从SIGQUIT
或EXC_BAD_ACCESS
开始崩溃。我不确定如何调试它。
这是一个例子:
override func viewDidLoad() {
super.viewDidLoad()
guard let context = self.extensionContext else { return }
guard let appUrl = URL(string: "myapp://") else { return }
print("context ", context.debugDescription)
/* output:
context <UIInputViewControllerInterfaceClient: 0x281680ab0> - UUID: 400EC078-721E-4500-A85A-0B0C970CD54A - _isHost: NO
_isDummyExtension:NO
inputItems:
(
)
*/
context.open(appUrl) // EXC_BAD_ACCESSS
}
以上以EXC_BAD_ACCESS
开头
stacktrace
func testOpen() {
guard let context = self.extensionContext else {
return
}
guard let appUrl = URL(string: "myapp://") else { return }
print("context ", context.debugDescription)
context.open(appUrl)
}
即使从未从任何地方调用SIGQUIT
,这也以testOpen
中断。
注释掉context.open(appUrl)
,然后键盘就可以正常启动了。