欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

@available关键字导致旧版本Xcode编译出错

程序员文章站 2022-03-28 17:51:55
用@available关键字导致旧版本Xcode编译出错。在Xcode11的SDK工程的代码里使用@available关键字判断当前移动端系统版本,打包的静态库拖入较低版本Xcode中编译,会出现以下错误:Undefine symbols for architecture i386:“__isPlatformVersionAtLeast”, referenced from:…ld: symbol(s) not found for architecture i386从错误信息来看,是 __isPl...

用@available关键字导致旧版本Xcode编译出错。
在Xcode11的SDK工程的代码里使用@available关键字判断当前移动端系统版本,打包的静态库拖入较低版本Xcode中编译,会出现以下错误:
Undefine symbols for architecture i386:
“__isPlatformVersionAtLeast”, referenced from:

ld: symbol(s) not found for architecture i386

从错误信息来看,是 __isPlatformVersionAtLeast 方法没有具体的实现,但是工程里根本没有这个方法。实际测试无论在哪里使用@available,并使用Xcode11打包成动态库或静态库,把打包的静态动态库添加到 Xcode10中编译都会出现这个错误,因此可以判断是iOS13中对应关键字@available实现使用新的api。
解决方案
如果SDK需要适配旧版本的Xcode保证可以在旧版本的Xcode上运行,那么需要避开此方法,可以通过获取系统版本来进行判断:
if ([UIDevice currentDevice].systemVersion.floatValue >= 13.0) {

}

本文地址:https://blog.csdn.net/yanhaijunyan/article/details/108710179