我创建了一个静态库,部署目标为iOS 10.2。该库已集成到一个部署目标为9.0的应用程序中。
一些奇怪的地方是,该应用程序在iOS 9.0上构建和运行都很好。这是为什么? 即使库只针对iOS 10.2及以上版本,应用程序也应该能够构建吗?
一些奇怪的地方是,该应用程序在iOS 9.0上构建和运行都很好。这是为什么? 即使库只针对iOS 10.2及以上版本,应用程序也应该能够构建吗?
是的,如果您的应用程序的基本SDK等于或高于静态库的部署目标,则您的构建将在没有错误的情况下编译。
静态库在内部是一堆已编译的对象。在您的应用程序编译后,在链接时,它会检查静态库中使用的符号的可用性。如果您的项目的基本SDK等于或高于静态库的部署目标,则您的项目将找到库中使用的所有符号的定义——因此没有编译器错误。
在运行时,如果您在版本低于静态库的部署目标并且使用了该版本中不可用的符号,则可能会出现错误。
如果您的代码/库使用符号:
如果在部署目标中定义,则您的代码链接和构建正常。在运行时: