Swift进阶之动态FrameWork的制作与使用

前言:

Swift发展至今,各版本语法更新换代,是让开发者非常头疼的,如今4.0也即将正式上线。之前笔者一直没有去弄过Swift的framework,也是因为其语法变动。但不得不说,Swift的进步是相当大的,如今各开源和未开源的第三方,也已经多不胜数。其中也有一部分是无法维护的。也有许多2.0的项目因为一些第三方,而废弃。语法更新的时候,打包的framework,是无法跟着升级的,除非有源文件,而这些第三方,也米有及时的更新,对项目的更新维护,带来了很大的一个坑。
另外,笔者查阅资料,发现关于Swift制作framework的资料非常至少,有的也是比较模糊,和时间古老。本篇主要讲解FrameWork的制作过程,及一些注意事项。

声明:

1,Swift语言,禁止制作.a类型的库,只能制作动态的frameWork
,framework有静态和动态两种,默认就是动态的,动态的不能支持模拟器,1是因为上架不支持,2是我在制作过程中,将静态和动态合并时,一直报错。

2,关于Swif如何隐藏方法细节
1),制作时不能公开任何内部文件到header的public里,如果公开了,能看到里面所有源码
2),要公开的类和方法前加上public
3),库内部的文件,可以相互访问
不加public会有什么影响呢?
如果不加,你制作完成的FrameWork,无法访问你所需要的类和方法。另外你用open也可,open和public的区别自行百度吧。

3,关于动态库上架问题
删除模拟器,只保留真机。

具体制作流程

一:创建framework工程
语言选择Swift

屏幕快照 2017-06-15 09.44.03.png
屏幕快照 2017-06-15 09.44.18.png

看一看里面的内容

屏幕快照 2017-06-15 09.45.10.png

在OC里面,咱制作的时候,可能就把里面的东西全部删了,但是这里,
1处对应的ZYSDKTest.h文件,开发者不要删除,其作用是:如果你这个库里面用到OC的文件,那么需要把OC的头文件导入到里面。当然,笔者的建议是,制作的FrameWork,最好是只用一种语言写的,避免不必要的麻烦。
2处,是当前库最低支持的系统。Swift3.0是10.0的系统,所以笔者这里就是选10.0了

二:把要打包的文件,拖入项目中
笔者拖了两个测试的文件,讲讲区别和作用

屏幕快照 2017-06-15 09.58.26.png
屏幕快照 2017-06-15 09.58.32.png

ZYString 和ZYStringConfig两个类,大家可以看到,我在ZYString里,把class 和方法都用了public修饰,其作用在上面的声明中,已经说,后面在使用中,会看到具体的区别。

三:Commond+B编译生成动态库
这一步和OC的是一样的,选择模拟器编译就是生成只支持模拟器的库
选择iOS devices 就是生成支持真机的动态库

屏幕快照 2017-06-15 10.01.21.png

编译之后,咱们再下面的Products中可以看到这个库已经由红色变为黑色了,右键Show in find就可以找到它。接下来,咱们在项目中去用它试试吧。

动态库的使用

1,把刚刚制作的动态库拷贝到项目文件夹中


屏幕快照 2017-06-15 10.44.17.png

2,在Genera中的Embedded Binaries中点击+选择addOther,找到你本项目中之前拷贝的库添加进去


0B41E159-9E7F-4590-9975-C1F6DF46DB36.png

3,操作完成之后效果
屏幕快照 2017-06-15 10.46.37.png

由于是动态库,所以需要在用到库的地方引入头文件见下图

3090413B-D364-43B1-8089-E675E44E2404.png

大家可以看到ZYString这个类,可以正常使用,但是ZYStringConfig这个类,使用时是报错的。
在前面说了,ZYString类和方法前都加了public,其作用在这里已表现的很明确了。
按住commond+左键,点击ZYString,进去看看

7A3EE229-3CE1-4AC8-86CF-4A7C5C0144C9.png

在这里面首先只看到一个类,就是ZYString,方法也是,如果你不加public在这里是看不到的。

并且一点,在这里,你只能看到方法名,看不到方法的实现过程。

这样,咱们就把方法的实现细节给隐藏了。并且,这个文件,你是无法更改的。不信你试试。

Swift制作的FrameWork在OC项目中的使用

创建一个OC的项目,并导入库,和之前步骤一样。
先来看看这个库中的文件


屏幕快照 2017-06-15 10.20.45.png

里面包含了两个文件,ZYSDKTest-Swift.h和ZYSDKTest.h两个文件。
那么它们跟在OC中Swif这个库有没有关系呢。
来看一下。

屏幕快照 2017-06-15 10.21.39.png

导入库的头文件
<ZYSDKTest/ZYSDKTest-Swift.h>
<ZYSDKTest/ZYSDKTest.h>
二者只需要导入其中之一即可
在下面的使用时,同样只能使用ZYString而不能使用ZYStingConfig

使用动态库崩溃,崩溃原因如下

屏幕快照 2017-06-15 10.50.46.png

重点是开头,dyld: Library not loaded: @rpath/libswiftCore.dylib
说明你库的导入方式不对。按照我上面说的方式,或者去百度教程吧。

扩展知识点

1,点a文件,和FrameWork动静态库,制作详解
http://www.jianshu.com/p/90f5ec723175
2,OC中使用Swift文件详解
http://www.jianshu.com/p/c4272dfb6ab2

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,165评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,720评论 1 298
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,849评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,245评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,596评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,747评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,977评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,708评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,448评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,657评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,141评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,493评论 3 258
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,153评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,890评论 0 198
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,799评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,685评论 2 272

推荐阅读更多精彩内容

  • 仅以方便自己查阅记录前言1.静态库和动态库有什么异同?静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗...
    190CM阅读 4,025评论 0 4
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,626评论 4 59
  • 静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别...
    吃瓜群众呀阅读 11,621评论 3 42
  • 队列(Queue)是一种先进先出(FIFO)的线性数据结构,插入操作在队尾(rear)进行,删除操作在队首(fro...
    薛皓哲阅读 426评论 0 0
  • 年轻时我曾经想过,追求的各种:叛逆、洒脱、自由、流浪、远方甚至爱情,都是为了自己,直到有一天,实在老得不好意思这样...
    腰间挂着诗篇的豪猪阅读 214评论 0 0