关于OC项目混编Swift遇到的坑

最近在做react-native项目,起初用到了socket.js做长连接,可能是因为socket.js设计之初是适应web环境的,所以在打包ios和安卓的时候,遇到了一些连接丢包的bug,后来领导决定用原生OC做socket连接,用的tomp协议封装的socket库,因此有了下文的坑:

接到这个任务后,着手在giehub找了个开源的stomp socket开源库,叫做StompClientLib的库,是一个swift封装的库,(尴尬,最近github一些比较流行的ios库都用swift封装的,看来OC风华已逝,所以我决定开始转战swfit了),但是它的依赖库是facebook的OC库,于是第一个坑来了:

我们用cocapods导入StompClientLib库,报错,大致说是项目是OC,导入的库是swift的,而且其所依赖库是OC,所以需要根据pod提示在podFile加入一行命令use_modular_headers!(不是use framework!网络上搜索OC混编swift库,一大堆说要用到这个命令,其实错误的,文章绝对抄袭的,如果是swfit项目用cocapods导入库,才需要用到use framework!命令,原因自行百度~),pods会自动讲swift库和OC库进行桥接操作~

解决了这条坑,以为万事OK了,然而,用网络上搜索“OC项目使用swfit库“按照教程所说:

第一步:在build settings,设置product module name,一般用app名称(比如我的项目为StompDemo)即可

第二步:defines modules设置为YES

第三步:在需要用到swfit的地方导入“StompDemo-Swfit.h”(这个文件是设置前两步后,编译项目,苹果自动会创建,不信?请看下图(1)文件描述)

第四步:在项目使用第三方库的类,然而错误!!说是找不到这个库??why?

图(1)

那是什么原因?百度google:

网上资源很多,但是大多雷同,都是抄来抄去,没有验证就发布的文章,后来自己看资源解决,理解这个product module name到底是什么意思?

终于看网络资源大致明白了,其实这里涉及到target了,其实当我们在项目的target中设置前面的会创建StompDemo-Swfit.h文件,但是这个文件是自动设置在这个target下的swift文件的桥接,然而我们的第三方库,并不是在这个target下,而是自己的StompClientLib的target(如下图),所以按照这个思路,我们应该是设置这个target的build setting。

没错,设置好,重新编译,然后在进入~/Library/Developer/Xcode/DerivedData目录,搜索相应的StompClientLib-Swift.h,可以找到该文件,哈哈哈,以为这个坑终于解决了!

然而,导入这个文件,WTF,提示无法找到该文件?又是一个坑!!!

第一时间想到导入第三方库常遇到的头文件无法搜索到的场景,在build setting 设置header search paths增加该文件路径?突然想到不对!这个文件你根本无法设置路径,因为它是在沙盒里,而不是在bundle中,如何设置?所以方案不对,那是什么原因呢?如何让编译器可以找到这个文件呢?啊啊啊啊啊啊,如何办?怎么办?该当何办?没思路啊!!!

俗话说:“天才是靠99%的不断尝试和1%的天赋”,所以只能不断尝试,各种尝试,终于终于:

当我输入import <StompClientLib>,根据xcode的代码提示功能,导入一个又一个文件,终于输入

import<StompClientLib/Swift Compatibility Header时,xcode自动提示目录下有StompClientLib-Swift.h文件,啊哈哈哈哈哈哈,导入这个文件,使用这个库,哇靠终于编译不报错,可以使用该库下的swift文件了~~终于解决问题啦~~飞起来了!!!这里正常应该可以了,这就是OC项目混编Swift的坑,但是其实后面还遇到问题,下一章讲吧,还是关于OC使用Swfit的问题,关于有一些swift的类型、方法、代理等无法转换的问题。

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

推荐阅读更多精彩内容