注:如果你创建的Framework不需要依赖第三方库,例如Masonry.framework,去掉或替换下面关于Masonry.framework的操作即可。
环境基于 Xcode 8.2.1
首先创建一个demo项目
![](https://img.haomeiwen.com/i1307900/fc17834d8c1f4b93.png)
然后在创建一个 target,选择 framework
![](https://img.haomeiwen.com/i1307900/5d5648f9f1173974.png)
把 Masonry.framework拖进项目中
![](https://img.haomeiwen.com/i1307900/74f79fe039c24a14.png)
写点代码。button最好不要拖到中间,也不需要做任何约束,这样运行后可以观察是否发生了变化。
![](https://img.haomeiwen.com/i1307900/c48ad8236e8a9829.png)
这时候直接运行会发生崩溃
![](https://img.haomeiwen.com/i1307900/160f8f3361eb2070.png)
选择 Build Phases, 点击左上角的加号,选择New Copy Files Phase
![](https://img.haomeiwen.com/i1307900/5402dc44f70a55f1.png)
然后选择 framework,并把Masonry.framework添加进去
![](https://img.haomeiwen.com/i1307900/394e3b60c570ea39.png)
这时就可以正常运行了
![](https://img.haomeiwen.com/i1307900/e272056a70de188b.png)
好,我们继续。在TestKit中创建一个
TableViewCell
.
注意在创建时要选择正确的 target
![](https://img.haomeiwen.com/i1307900/8ad34e2c0871d681.png)
在
TableViewCell.m
中写上代码
![](https://img.haomeiwen.com/i1307900/2e41416e91552f3c.png)
如果你发现在写
#import <Masonry/Masonry.h>
这句代码时,会报错,那请把Masonry.framework 加入到TestKit target 的引用库中,如下图。
image.png
好了,继续把
TableViewCell.m
中的代码完成。
接下来在故事版中拖一个
UITableViewController
,顺便完成一些代码,如下图
![](https://img.haomeiwen.com/i1307900/085f0ca4d9a58abb.png)
写完之后运行一下
![](https://img.haomeiwen.com/i1307900/fff300022a935932.png)
嗯,看上去已经完成了!
创建一个新的项目,TestKitDemo2,把我们制作好的framework验证一下。
在TestKitDemo2中,创建同样的TableViewController
,写同样的代码。
把相关的库都拖入进去。
下图中代码错误 Line 27 return 0; 应该为 return 1; 就不在重新截图了。
![](https://img.haomeiwen.com/i1307900/f4f9139ca26a24d1.png)
运行一下,会报错
![](https://img.haomeiwen.com/i1307900/21217ffa24508f53.png)
还记得怎么添加 Copy files吗?添加一下就好了
![](https://img.haomeiwen.com/i1307900/94735649b73dfca6.png)
继续运行一下,应该会崩溃吧?嘻嘻~
![](https://img.haomeiwen.com/i1307900/cfd59740f67d70ae.png)
在
TableViewController.m
文件中添加如下代码,你会发现报错
#import <TestKit/TestKit.h>
![](https://img.haomeiwen.com/i1307900/95f37ed70dd8019c.png)
重点来了(敲黑板)
现在我们切换回TestKitDemo的项目中,选择TestKit target -> Build Phases -> Headers 如下图
![](https://img.haomeiwen.com/i1307900/7c4cdb2ca5049014.png)
把 TableViewCell.h 拖到 Public 下
这里的意思是,公开头文件,不公开文件,那就没法用,同样,在import时会报错。而这里默认不在Public里,需要手动调整。
![](https://img.haomeiwen.com/i1307900/3880eb5a8d91da39.png)
然后build TestKit ,记得 scheme不要错了哦~
然后把 TestKitDemo2 中的TestKit.framework 替换一下,替换完成后,查看Headers
![](https://img.haomeiwen.com/i1307900/298d6d45dea6b53c.png)
同样不要忘记在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
好了,运行一下,完成,搞定!
网友评论