12

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

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

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

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

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

4

3 回答 3

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 构建阶段中列出,请选择它,然后选择 Edit > Delete 将其删除。现在您可以告诉链接器对该框架使用弱链接。

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

于 2017-03-27T18:11:27.860 回答
5

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

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

于 2019-11-07T15:08:21.267 回答
0

这张图展示了如何弱链接一个框架:

如何弱链接框架

于 2020-05-26T13:22:17.983 回答