试图添加离线HLS (一个新的ios 10功能)到一个应用程序。为了让这个应用仍然在ios 9上运行,而没有离线的HLS功能,我正在尝试以下内容。在ios10上可以很好地工作,也可以为ios9编译。
@available(iOS 10.0, *)
@objc class DownloadManager: NSObject, AVAssetDownloadDelegate {
//Do stuff with downloading assets
}然而,当我在ios 9设备上实际运行这个程序时,应用程序会立即崩溃,其中包含以下消息:
dyld:符号未找到:从: /var/mobile/Containers/Bundle/Application/7062C410-C4F5-4270-9F1E-22750E99F799/wod.app/wod引用的_OBJC_CLASS_$_AVAssetDownloadTask在/var/mobile/Containers/Bundle/Application/7062C410-C4F5-4270-9F1E-22750E99F799/wod.app/wod中预期为: /System/Library/Frameworks/AVFoundation.framework/AVFoundation
我已经将与此相关的所有代码都限制在DownloadManager类中,所以我不知道下一步该做什么。谢谢!
发布于 2017-03-27 18:11:27
我想通了。我不得不弱链接AVFoundation。在苹果的网站上找到的。
弱连接到整个框架 当您在另一个框架中引用符号时,这些符号中的大多数都与您的代码有很强的链接。为了创建到符号的弱链接,包含符号的框架必须显式地向其添加weak_import属性(参见标记符号以表示弱链接)。但是,如果您不维护框架并且需要弱链接其符号,则可以显式地告诉编译器将所有符号标记为弱链接。要做到这一点,您必须用Xcode打开项目并修改目标链接到框架的方式,如下所示: 选择要修改的目标,并显示其构建阶段。用库构建阶段扩展链接二进制以查看目标当前链接的框架。如果您希望弱链接到的框架在构建阶段中列出,请选择它,然后选择Edit > Delete来删除它。现在,您可以告诉链接器对该框架使用弱链接。 选择目标,打开其信息窗口,然后单击Build。在另一个Linker设置中,添加以下命令行选项规范,其中是要弱链接到的框架的名称:-weak_framework构建您的产品。
发布于 2019-11-07 15:08:21
我也有同样的问题,我弱链接了下面的AVFoundation框架。
在生成设置中的“其他链接器标志”中添加-weak_framework AVfoundation
发布于 2020-05-26 13:22:17
下图显示了如何弱链接框架:

https://stackoverflow.com/questions/43009124
复制相似问题