我的博客原文地址
Framework
Framework 是资源的集合,将静态库和其头文件包含到一个结构中,让 Xcode 可以方便地把它纳入到你的项目中。
在运行时,库中按你的想法暴露需要的头文件,整个工程都可以调用暴露出来的接口和参数,这样减少了内存消耗,提高了系统的性能。
为什么使用 framework
与别人分享自己开发的组件,有两种方式。
- 直接提供源代码。
- 将组件代码编译成静态库,供他人调用。
第一种方式容易被人看到具体实现的细节,这些可能是你不想暴露出来的。此外,开发者也可能并不想看到你的所有代码,而仅仅是希望将功能的一部分植入到自己的应用中。
因此很多组件的封装采用第二种方式,这也是下文介绍的主要内容。
配置静态库工程
步骤1:打开 Xcode ,依次点击 Create a new Xcode project → iOS → Cocoa Touch Framework
,在 Product Name
中填写名称。(注:这就是最后 framework 的名称。)
步骤2:假如你的项目依赖某些系统库,那么需要通过点击 Targets → Build Phases → Link Binary with Libraries
,点击 +
符号将它们添加到工程中。
步骤3:修改 Project 中的 iOS Deployment Target 版本号,选择你的框架最低支持的 iOS 版本。
步骤4:如果组件中存在 .xib
文件,请确保 TARGETS → Build Phases → Copy Bundle Resources
下存在该 xib 文件。
步骤5:将封装好的组件文件夹拖入到项目目录下,选择你要公开的头文件。
步骤6:依次点击 TARGETS → Build Phases → Headers
,目录下有:
- Public:存放公开的头文件,给外部调用。
- Private:存放私有的 Header,但头文件在编译之后还会存在。一般用来存放项目中需要调用但又不想给别人看到其内部实现的文件。
- Project:隐藏的文件。
导出 framework
选中 Scheme 选择当前项目,然后右边设备依次选中 Generic iOS Device(通用真机版本)和任一模拟器,分别编译(command + B),成功将会自动跳转到打出的 .framework
文件相应的目录下。
合成 framework
为了让用户能统一调用一个 framework ,还需要将二者合成为一个 framework 。这里介绍一种简单的方法:
1、新建一个 target,依次点击 TARGETS 左下角的加号按钮 → Cross-platform → Other 下的 Aggregate
。
2、点击工程文件,选 TARGETS → 刚才创建的 Aggregate → Build Phases → + → New Run Script Phases
。在当前栏目里会多出一个 Run Script
,在里面输入以下脚本:
#!/bin/sh