制作 iOS framework
注:如果你创建的Framework不需要依赖第三方库,例如Masonry.framework,去掉或替换下面关于Masonry.framework的操作即可。
环境基于 Xcode 8.2.1
首先创建一个demo项目

然后在创建一个 target,选择 framework

把 Masonry.framework拖进项目中

写点代码。button最好不要拖到中间,也不需要做任何约束,这样运行后可以观察是否发生了变化。

这时候直接运行会发生崩溃

选择 Build Phases, 点击左上角的加号,选择New Copy Files Phase

然后选择 framework,并把Masonry.framework添加进去

这时就可以正常运行了

好,我们继续。在TestKit中创建一个
TableViewCell
.
注意在创建时要选择正确的 target

在
TableViewCell.m
中写上代码

如果你发现在写
#import <Masonry/Masonry.h>
这句代码时,会报错,那请把Masonry.framework 加入到TestKit target 的引用库中,如下图。
image.png
好了,继续把
TableViewCell.m
中的代码完成。
接下来在故事版中拖一个
UITableViewController
,顺便完成一些代码,如下图

写完之后运行一下

嗯,看上去已经完成了!
创建一个新的项目,TestKitDemo2,把我们制作好的framework验证一下。
在TestKitDemo2中,创建同样的TableViewController
,写同样的代码。
把相关的库都拖入进去。
下图中代码错误 Line 27 return 0; 应该为 return 1; 就不在重新截图了。

运行一下,会报错

还记得怎么添加 Copy files吗?添加一下就好了

继续运行一下,应该会崩溃吧?嘻嘻~

在
TableViewController.m
文件中添加如下代码,你会发现报错
#import <TestKit/TestKit.h>

重点来了(敲黑板)
现在我们切换回TestKitDemo的项目中,选择TestKit target -> Build Phases -> Headers 如下图

把 TableViewCell.h 拖到 Public 下
这里的意思是,公开头文件,不公开文件,那就没法用,同样,在import时会报错。而这里默认不在Public里,需要手动调整。

然后build TestKit ,记得 scheme不要错了哦~
然后把 TestKitDemo2 中的TestKit.framework 替换一下,替换完成后,查看Headers

同样不要忘记在Copy Files中添加哦~
忘记的话就会出现下面的错误
dyld: Library not loaded: @rpath/TestKit.framework/TestKit
Referenced from: /var/containers/Bundle/Application/D1F9C83D-09D2-4BC6-B83D-E70E4857A4F8/TestKitDemo2.app/TestKitDemo2
Reason: image not found
好了,运行一下,完成,搞定!