dyld找不到AVAssetDownladTask

时间:2017-03-24 21:04:55

标签: ios swift ios10 hls avassetdownloadtask

尝试将离线HLS(新的ios 10功能)添加到应用。我在swift中尝试以下内容,以便应用程序仍可在ios 9上运行,而无需离线HLS功能。在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.framework/AVFoundation in   /var/mobile/Containers/Bundle/Application/7062C410-C4F5-4270-9F1E-22750E99F799/wod.app/wod

我已将与此相关的所有代码约束到DownloadManager类,所以我不知道接下来该做什么。谢谢!

3 个答案:

答案 0 :(得分:3)

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

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

  

弱链接到整个框架

     

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

     

选择要修改的目标并显示其构建阶段。   展开Link Binary With Libraries构建阶段以查看   目前由目标链接的框架。如果你想要的框架   链接二进制与库构建中列出了弱链接   选择它,然后选择编辑>删除以删除它。现在你可以   告诉链接器为该框架使用弱链接。

     

选择目标,打开其“信息”窗口,然后单击“构建”。对他人   Linker Flags构建设置,添加以下命令行选项   规范,你在哪个框架的名称   想弱联系到:   -weak_framework构建您的产品。

答案 1 :(得分:0)

我遇到了同样的问题,并且我弱连接了AVFoundation框架 下面是步骤

在构建设置的“其他链接器标志”中

添加 -weak_framework

答案 2 :(得分:0)

此图显示了如何弱链接框架:

how to weak link a framework