前言
静态库为在多个应用之间共享代码提供了一种便捷的方式。在iOS中,静态库是唯一被支持的库类型。该文档说明了如何如何从你的应用中提取代码来构建一个静态库,并且,该文档还讲述了如何在多个 应用中使用该静态库。
使用静态库有两个步骤:
第一步,创建静态库;
第二步:配置你的应用,来使用静态库;
一、创建静态库
打开Xcode,创建一个Cocoa Touch Static Library项目。(还不会创建?)我这里创建的库名字叫MyLibrary。
新建的库项目带了一些模板生成的源文件,你可以删除它们。
xcodeproj文件)拖动到应用项目中去。(第一句话,这里有点不好理解,按照苹果的思路,它们是想静态库是从应用中提取出来的,多次被使用的一些代码。但是在实际中,我们可能是想将现有的一些代码,生成一个静态库,然后再来使用它。其实从本质上讲,这两个思路是殊途同归的,不过我觉得苹果的思路更科学。因为即便去生成一个静态库,也必须要有测试程序,等于是先设计测试程序,再设计静态库。就像我们自顶向下的分析客户需求,然后再去设计具体的代码,是要使用静态库实现呢,还是别的什么方式。)
1、将代码移动到你的库中
“Copy items into the destination group’s folder”是选中的,也要确保“Add to targets”里,你的目标库被选中。
源文件。这些源文件现在被编译到了你的库里面,而不是直接被应用所包含。(苹果的思路,符合大众模式,但是如果你的目的仅仅是编写这个静态库,那么你完全按照这种思路可能就不那么方便了。我想,直接将库所需要的源码,添加到库里去,肯定也是可以的。)
2、将资源移动到你的库中
暂略去。
3、配置导出头文件
你的库可能会有一个或者多个头文件以供客户程序来导入。接下来就来配置导出的头文件。选择库项目的target,就会打开target编辑器,选择build phases选项卡。在这里,如果有一个 “Copy Headers” 项,你必须删除它,因为copy headers build phases do not work correctly with static library targets when performing the “Archive” action in Xcode.
接下来,你可以添加一个Copy Files build phase用来导出你的头文件。Xcode4.4及以后的版本已经为你添加好了。然后,选择你的头文件,把它拖动到Copy Files build phase。
二、使用静态库
打开应用的build phases选项,处理 Link Binary with Libraries,点击加号,把静态库添加进来。
打开应用的build settings选项,找到“Other Linker Flags” 生成选项,确保-ObjC标记被设置。
This flag will tell the linker to link all Objective-C classes and categories from static libraries into your application, even if the linker can’t tell that they are used. This is needed because Objective-C is a dynamic language and the linker can’t always tell which classes and categories are used by your application code.