代码之家  ›  专栏  ›  技术社区  ›  zpesk

静态库的用途

  •  2
  • zpesk  · 技术社区  · 15 年前

    我想创建一个连接到Web服务的应用程序核心,下载数据,解析数据,然后将其返回到视图控制器。这个核心理想地处理来自多个控制器的请求,并抽象掉大量重复的代码。此外,我还希望将此核心应用于Mac OS X应用程序。对于静态库来说,这些任务是一个好主意吗?另外,如何在iPhone应用程序中添加静态库?添加静态库后,如何引用它(即导入语句等)?

    2 回复  |  直到 15 年前
        1
  •  4
  •   Peter Hosey    15 年前

    我想创建一个连接到Web服务的应用程序核心,下载数据,解析数据,然后将其返回到视图控制器。这个核心理想地处理来自多个控制器的请求,并抽象掉大量重复的代码。此外,我还希望将此核心应用于Mac OS X应用程序。对于静态库来说,这些任务是一个好主意吗?

    对。

    另外,如何在iPhone应用程序中添加静态库?

    将静态库的目标添加到项目中,然后将其构建产品添加到iPhone应用程序的目标中。当您开始使用Mac OS X应用程序时,也将库构建产品添加到该目标。

    添加静态库后,如何引用它(即导入语句等)?

    #import 是一个预处理器指令;您可以在编译源文件阶段的预处理阶段在头文件上使用它。

    编译源文件将生成对象文件,链接器将在下一阶段将这些文件融合(链接)在一起。这个阶段还包括任何静态库中的链接器链接。

    必须在应用程序目标的链接二进制文件阶段添加库构建产品(来自库目标),以便链接器将库链接到应用程序中。

        2
  •  1
  •   Matt Long    15 年前

    除非您希望在不分发源代码的情况下分发静态库,否则我真的没有足够的理由创建它。您必须为每个平台重新编译,所以您也可以从一个公共位置添加library.h和.m文件(例如,添加时不要将文件复制到项目中)。“添加现有文件…”选项允许您在添加时取消选中标记为“将项目复制到目标组文件夹(如果需要)”的复选框。然后,对库文件所做的任何更改都将在两个项目中更新。构建静态库只是增加了另一层不必要的复杂性(其他目标等)(imho,抱歉不同意peter;-)。

    最好的问候。