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