尝试将离线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类,所以我不知道接下来该做什么。谢谢!
答案 0 :(得分:3)
我明白了。我不得不弱链接AVFoundation。在苹果的网站上找到它。
弱链接到整个框架
当您在另一个框架中引用符号时,大多数这些符号 与您的代码密切相关。为了创建一个弱链接 符号,包含符号的框架必须明确添加 weak_import属性(请参阅标记弱链接的符号)。 但是,如果您不维护框架并需要链接它 弱符号,你可以明确告诉编译器标记所有 符号弱关联。为此,您必须打开您的项目 Xcode并修改目标链接到框架的方式 如下:
选择要修改的目标并显示其构建阶段。 展开Link Binary With Libraries构建阶段以查看 目前由目标链接的框架。如果你想要的框架 链接二进制与库构建中列出了弱链接 选择它,然后选择编辑>删除以删除它。现在你可以 告诉链接器为该框架使用弱链接。
选择目标,打开其“信息”窗口,然后单击“构建”。对他人 Linker Flags构建设置,添加以下命令行选项 规范,你在哪个框架的名称 想弱联系到: -weak_framework构建您的产品。
答案 1 :(得分:0)
我遇到了同样的问题,并且我弱连接了AVFoundation框架 下面是步骤
在构建设置的“其他链接器标志”中添加 -weak_framework
答案 2 :(得分:0)