gpt4 book ai didi

ios - Swift 中的 UIDocumentInteractionControllerDelegate EXC_BAD_ACCESS

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

我目前正在尝试使用另一个应用程序使用 UIDocumentInteractionController 实例打开一个文件。一切正常(例如显示选项对话框、打开应用程序)但是当应用程序切换实际发生时,我收到一个 EXC_BAD_ACCESS 而不是 didFinishSendingToApplication: 委托(delegate)回调。在我将此代码从 Objective-C 移植到 Swift 之前,一切都运行良好。知道这里出了什么问题吗?

self.documentInteractionController = UIDocumentInteractionController(URL: self.fileURL)
self.documentInteractionController!.UTI = "net.whatsapp.movie"
self.documentInteractionController!.delegate = self

这是我能得到的所有堆栈跟踪(崩溃实际上发生在主函数中,所以我无法得到更多...):

* thread #1: tid = 0x12ef7e, 0x0000000182dd18c8 CoreFoundation`CFStringCreateCopy + 36, queue = 'com.apple.main-thread', stopreason = EXC_BAD_ACCESS (code=1, address=0x0)
* frame #0: 0x0000000182dd18c8 CoreFoundation`CFStringCreateCopy + 36
frame #1: 0x0000000101df09d8 libswiftCore.dylib`function signature specialization <Arg[0] = Owned To Guaranteed, Arg[1] = Dead> of Swift.String.init (Swift.String.Type)(_cocoaString : Swift.AnyObject) -> Swift.String + 108
frame #2: 0x0000000101dd45b0 libswiftCore.dylib`Swift.String.init (Swift.String.Type)(_cocoaString : Swift.AnyObject) -> Swift.String + 24
frame #3: 0x0000000100253814 MyApp`@objc MyApp.MyViewController.documentInteractionController (MyApp.MyViewController)(ObjectiveC.UIDocumentInteractionController, didEndSendingToApplication : Swift.String) -> () + 84 at MyViewController.swift:0
frame #4: 0x0000000183dedf9c Foundation`__NSThreadPerformPerform + 372
frame #5: 0x0000000182ea4240 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 24
frame #6: 0x0000000182ea34e4 CoreFoundation`__CFRunLoopDoSources0 + 264
frame #7: 0x0000000182ea1594 CoreFoundation`__CFRunLoopRun + 712
frame #8: 0x0000000182dcd2d4 CoreFoundation`CFRunLoopRunSpecific + 396
frame #9: 0x000000018c5e36fc GraphicsServices`GSEventRunModal + 168
frame #10: 0x0000000187992fac UIKit`UIApplicationMain + 1488
frame #11: 0x00000001000c6374 MyApp`main(argc=1, argv=0x000000016fdf79c0) + 124 at main.m:33
frame #12: 0x0000000194d8ea08 libdyld.dylib`start + 4

最佳答案

真正的问题是 SDK 上的委托(delegate)签名错误。代替

documentInteractionController(controller: UIDocumentInteractionController, didEndSendingToApplication application: String)

你应该使用

documentInteractionController(controller: UIDocumentInteractionController, didEndSendingToApplication application: String?)

请不要最后一个 ?,它表示应用程序参数可以是 nil,它始终是。

您应该对 willBeginSendingToApplication 调用执行相同的操作,因为它也可以有一个 nil 应用程序参数。

可以安全地忽略提示与协议(protocol)预期不同的可选性的警告。

关于ios - Swift 中的 UIDocumentInteractionControllerDelegate EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30844917/

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