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

image.png











网友评论