You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xcode 9.3后使用「Open in…」打开文件时应用崩溃问题求助

解决Xcode 9.3+中「Open in…」打开文件时应用崩溃的问题

问题描述

在Xcode 9.3版本之前,我导入文件没有任何问题;但现在尝试使用「Open in…」打开文件时,应用会崩溃,报错信息为Thread 1: EXC_BAD_ACCESS (code=1, address=0x0)。甚至无法进入我的处理方法:

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
    let urlName = url.lastPathComponent
    print("Gotten a file \(urlName)")
}

也就是说应用在获取文件之前就崩溃了,对此我无法理解。另外我在AppDelegate中还新建了一些内容。

排查与解决建议

兄弟,我之前也踩过类似的坑,给你几个实用的排查方向:

  • 检查文件关联配置:Xcode 9.3之后系统对Info.plist里的文件关联配置要求更严格了。你去核对下CFBundleDocumentTypes和LSItemContentTypes的配置,是不是文件类型没对应上、或者漏了必要的字段?系统在传递URL前可能因为配置不合法导致内存访问出错。
  • 排查AppDelegate新增代码:你提到在AppDelegate里加了新内容,大概率是这些代码在「Open in…」触发的启动流程里出了问题——比如某个变量没初始化、或者不小心释放了不该释放的对象。先把新增代码注释掉,再测试功能,如果不崩溃了,就逐步定位是哪段代码的问题。
  • 切换到新的Open API:你现在用的application(_:open:sourceApplication:annotation:)是旧API,从iOS 9开始苹果就推荐用application(_:open:options:)替代了,旧API在高版本系统里可能存在兼容性问题。换成下面的代码试试:
    func application(_ application: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any]) -> Bool {
        let urlName = url.lastPathComponent
        print("Gotten a file \(urlName)")
        return true
    }
    
  • 排查内存问题:EXC_BAD_ACCESS本质是非法内存访问,比如悬空指针、对象被提前释放。你可以用Xcode的Memory Graph Debugger来排查,在崩溃前捕获内存状态,看看有没有异常的对象引用。

内容的提问来源于stack exchange,提问作者DogCoffee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:52:41