dyld 未找到 AVAssetDownladTask

Nic*_*kDK 12 http-live-streaming ios swift ios10 avassetdownloadtask

尝试将离线 HLS(ios 10 的一项新功能)添加到应用程序。我正在快速尝试以下操作,以便应用程序在没有离线 HLS 功能的情况下仍能在 ios 9 上运行。在 ios10 上运行良好,也可以为 ios9 编译。

    @available(iOS 10.0, *)
    @objc class DownloadManager: NSObject, AVAssetDownloadDelegate {
           //Do stuff with downloading assets
      }
Run Code Online (Sandbox Code Playgroud)

但是,当我在 ios 9 设备上实际运行它时,应用程序立即崩溃并显示以下消息:

dyld:未找到符号:_OBJC_CLASS_$_AVAssetDownloadTask 引用自:/var/mobile/Containers/Bundle/Application/7062C410-C4F5-4270-9F1E-22750E99F799/wod.app/wod 预期在:/Systemworks/FoundaryFrame /var/mobile/Containers/Bundle/Application/7062C410-C4F5-4270-9F1E-22750E99F799/wod.app/wod中的框架/AVFoundation

我已将与此相关的所有代码都限制在 DownloadManager 类中,所以我不知道下一步该做什么。谢谢!

Nic*_*kDK 11

我想到了。我不得不弱链接 AVFoundation。在苹果的网站上找到了它。

https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WeakLinking.html

与整个框架的弱链接

当您在另一个框架中引用符号时,这些符号中的大多数都与您的代码密切相关。为了创建到一个符号的弱链接,包含该符号的框架必须显式地向它添加 weak_import 属性(参见标记弱链接的符号)。但是,如果您不维护框架并且需要弱链接其符号,则可以明确告诉编译器将所有符号标记为弱链接。为此,您必须在 Xcode 中打开您的项目并修改目标链接到框架的方式,如下所示:

选择要修改的目标并显示其构建阶段。展开 Link Binary With Libraries 构建阶段以查看目标当前链接的框架。如果要弱链接的框架在 Link Binary With Libraries 构建阶段中列出,请选择它,然后选择“编辑”>“删除”将其删除。现在您可以告诉链接器对该框架使用弱链接。

选择目标,打开其信息窗口,然后单击构建。在其他链接器标志构建设置中,添加以下命令行选项规范,其中是您要弱链接到的框架的名称: -weak_framework 构建您的产品。


V V*_*V V 5

我有同样的问题,我弱链接了 AVFoundation 框架下面是步骤

在构建设置的“其他链接器标志”中添加-weak_framework AVfoundation