Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 静态库的用途_Iphone_Cocoa_Cocoa Touch_Xcode - Fatal编程技术网

Iphone 静态库的用途

Iphone 静态库的用途,iphone,cocoa,cocoa-touch,xcode,Iphone,Cocoa,Cocoa Touch,Xcode,我想创建一个应用程序核心,它连接到Web服务,下载数据,解析数据,然后将数据返回给视图控制器。理想情况下,该内核将处理来自多个控制器的请求,并抽象出大量重复代码。此外,我还想将此内核潜在地用于MacOSX应用程序。对于静态库来说,这些任务是个好主意吗?另外,如何将静态库添加到iPhone应用程序中?添加静态库后,如何引用它(即导入语句等) 我想创建一个应用程序核心,它连接到Web服务,下载数据,解析数据,然后将数据返回给视图控制器。理想情况下,该内核将处理来自多个控制器的请求,并抽象出大量重复代

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

我想创建一个应用程序核心,它连接到Web服务,下载数据,解析数据,然后将数据返回给视图控制器。理想情况下,该内核将处理来自多个控制器的请求,并抽象出大量重复代码。此外,我还想将此内核潜在地用于MacOSX应用程序。对于静态库来说,这些任务是个好主意吗

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

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

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

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

编译源文件将生成目标文件,链接器将在下一阶段将其融合(链接)在一起。此阶段还包括任何静态库中的链接器链接


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

除非您希望在不分发源的情况下分发静态库,否则我想不出创建静态库的真正好理由。您必须为每个平台重新编译,因此您最好只从公共位置添加库.h和.m文件(例如,添加时不要将文件复制到项目中。“添加现有文件…”选项将允许您在添加时取消选中标记为“将项复制到目标组文件夹(如果需要)”的复选框)。然后,对库文件所做的任何更改都将在两个项目中更新。构建静态库只会增加另一层不必要的复杂性(附加目标等)(IMHO,抱歉不同意Peter;-)


致以最诚挚的问候。

谢谢您的回答-我仍然有点困惑,我需要导入声明吗??如果是这样,我是否只使用静态库中的文件名作为导入语句??您需要一个
#import
语句来导入头文件
#import
(这是一个预处理器指令)和库(您提供给链接器的库)之间没有直接关系。
#import
的目的是将接口的头从库(例如库中某个类的接口)导入到将要使用该接口的源文件中。简单地说,头包含声明,库包含实际实现。您需要导入声明,以便编译器知道您将使用什么代码;你需要将库链接到你的应用程序中,这样你的应用程序才能在运行时获得可用的代码。也许在iPhone示例代码中指出一个现有的示例会有所帮助?我自己还没有找到一个——你知道吗?对于一个开源示例,你可以看看在核心Plot静态库实现中做了什么:,此外,我们还有关于如何将库整合到应用程序中的文档:库的要点是,您不希望它只是默默地改变自己——没有警告——引入新的bug,带回旧的bug,等等。它是“封装”思想的一个强版本,这在一定程度上启发了OOP的创建。这是一场可怕的噩梦。一旦你花了几天的时间试图调试为什么你的应用程序在没有明显原因的情况下从“工作”变为“损坏”,并最终证明你没有任何改变。。。然后花了好几天的时间想知道怎么会发生这种情况,恨Xcode不能正确清洁。。。您将看到库的值:)。