我有一些Objective-C类,我目前正在Cocoa应用程序(Mac OS X)和Cocoa Touch应用程序(iOS)中使用它们.目前,当我更新这些类时,我必须将更新的.h.m个文件复制到这两个项目中.没什么大不了的,但我会在更多的项目中使用它们.

所以,我想把这些类构建成一个Objective-C静态库.然后在所有其他项目中链接到该库.

有没有一种方法可以构建一个静态库,使其同时适用于Cocoa和Cocoa touch应用程序?

我试着用这些类构建一个Cocoa静态库,但当我试图在Cocoa应用程序中链接该库时,我会遇到各种错误,我确信这些错误来自于我做得不对这一事实.

那么,我如何以right的方式构建Objective-C静态库呢?我必须同时建立Cocoa Touch和Cocoa静态库吗?或者我能做一个吗?这是怎么做到的?

有关于这个主题的好教程吗?

我在网上搜索过,似乎找不到关于这个主题的全面教程,所以我在这里提出了这个问题,希望能发布一个很好的答案,这个问题可以作为我和future 提问者的资源.

推荐答案

对于XCode 5.这些答案似乎有点过时了.

1.在Xcode中创建新的静态库应用程序

2.您可以删除它创建的任何文件,并添加自己的文件.添加你的方法等等.

3.静态库的一个小问题是,您只能为设备构建或在模拟器中运行.所以我们需要创建一个支持ARM和i386体系 struct 的库,要做到这一点,我们需要创建一个通用二进制文件(因此它将支持模拟器和设备构建).

Create a new target (File > New > Target). New Target

4.Select New Target then add a new build phase (Editor > Add Build Phase > Add Run Script Build Phase New Build Phase

5. Select 构建阶段,并从该链接将脚本输入运行脚本窗口.

运行脚本代码

6.现在你需要构建每个架构(模拟器和iOS设备)

6.2. Select 我们的库,然后 Select iOS设备,单击构建或运行(Command+B)

6.3.然后 Select 模拟器( Select Xcode左上方的库图标,然后 Select iOS模拟器)

7.Now you want to build the BullsEye icon > iOS Device. This will be the aggregate target and will combine our two libraries into a new universal file.

8.让我们看看这一切是否奏效.

9.如果一切正常,你应该在finder中看到以下文件.

10.最后一步很简单,只需将"library.a"文件和includes文件夹拖动到新的Xcode项目中即可.

在此处输入图像描述

在新项目中,除了导入要使用的头文件之外,您不必做任何其他事情,但不必更改链接标志或头搜索路径.这就行了.

(感谢任何反馈)或者请编辑我的帖子以提高清晰度.

**加分***

现在,任何正在使用您的库的人都可以 Select +单击为您的课程提供上下文感知帮助.

基于头文件的上下文感知帮助

Objective-c相关问答推荐

应用程序终止时处理推送通知

Objective-C 中的实例变量是否默认设置为 nil?

错误无法使 UICollectionElementKindCell 类型的视图出列

是否可以 suppress Xcode 4 静态分析器警告?

在 Objective-C 中实现纯虚方法

如何创建 NSIndexPath:indexPathWithIndexes:length 所需的索引:

将长按手势和拖动手势结合在一起

indexOfObject 对比indexOfObjectIdenticalTo

更改 UINavigationBar 字体属性?

滚动 NSScrollView 时的回调?

将 NSArray 转换为 NSDictionary

如何删除 xcode 5 中的旧配置文件?

如何删除应用程序指定目录中的所有文件?

在 iPhone 应用程序中使用 RestKit 的最佳方式

在我的 iOS Mail 和 Safari 应用程序中支持 Open In... 菜单项

计算 UILabel 文本大小

@dynamic 在 Objective-C 中做了什么?

为什么 Select Emacs/Vim/Textmate? Xcode 还不够好吗?

判断核心数据中是否存在对象的最快方法?

所有异常断点在模拟器上无缘无故停止