2017-03-01 18 views

回答

6

是,如果您的应用的Base sdk等于或高于静态库的部署目标,则您的构建将无错地编译。

静态库内部是一堆编译对象。应用程序编译完成后,在链接时,它会检查静态库中使用的符号的可用性。如果您的项目的基础sdk等于或高于静态库的部署目标,您的项目将查找库中使用的所有符号的定义-So 无编译器错误

在运行时,如果您在ios版本低于静态库的部署目标的设备上使用您的应用,并且使用了该版本中不可用的符号,则可能会出错。

如果您的代码/库的使用符号:

  1. 主项目的基本SDK没有定义(例如,从库中的较新的操作系统一 符号),你会得到一个编译时错误。
  2. 在基本SDK中定义但标记为弃用,您会收到编译时警告。
  3. 在部署目标中定义,您的代码正常链接和构建。运行时:

    • 在运行早于部署目标的操作系统的系统上,如果使用该OS中不可用的符号,则代码可能无法加载。
    • 在运行等于或晚于部署目标 的操作系统的系统上,您的代码对于在该操作系统中不可用的符号具有空指针。

来源:developer.apple.com

这里是从上面的链接图片,说明您可以根据部署目标和基地SDK Image from above link, explaining what symbols you can use depending on deployment target and base sdk.

+0

嗯那就是我所害怕的。虽然这很有道理,但我希望它们能成为我想做的事情。谢谢! –

相关问题