我创建了一个静态库,其部署目标为iOS 10.2。该库集成在部署目标为9.0的应用程序中。
不知何故,该应用程序在iOS 9.0上构建并运行良好。这是为什么? 应用程序应该构建,即使该库仅针对iOS 10.2及更高版本吗?
答案 0 :(得分:7)
是的,如果您的应用的Base sdk等于或高于静态库的部署目标,您的构建将无错误编译。
静态库内部是一堆编译对象。在您的应用程序编译之后,在链接时,它会检查静态库中使用的符号的可用性。如果您的项目的基本sdk等于或高于静态库的部署目标,您的项目将找到库中使用的所有符号的定义-So No compiler error 。
在运行时,如果您在ios版本低于静态库部署目标的设备上使用您的应用程序,并且使用了该版本中不可用的符号,则可能会出错。
如果您的代码/库使用符号:
在部署目标中定义,您的代码会正常链接和构建。在运行时: