Swift和OC互调

整理之前学习swift的笔记,虽然现在看起来很简单,但还是想分享出来。

(一)Swift调用OC

假设:我们的项目是Swift的。项目中用到了OC写的一些类。那么怎么让Swift调用OC类呢?如下图:
新建项目:Language选择Swift语言。

10011853_iJBv.png
新建Swift项目.png


添加OC文件:给项目中新建OC文件(向项目中拖拽已有OC文件或者通过command + N新建OC文件),如下图(新建一个OC类):

10011853_AU1J.png
Snip20160919_9.png

添加桥接文件:点击Next,那么会出现以下以下界面,点击"Create Bridging Header":

10011854_h0PS.png
添加桥接文件.png

完成:点击Finish后,你会发现,除了我们新建的OC文件外,还会额外多出一个名为SwiftAndOC-Bridging-Header.h的文件,如下图:
可以发现,桥接文件也一个.h文件。桥接文件的名字就是以项目名开头,后面又拼接了"-Bridging-Header"

10011854_evJS.png
Snip20160919_10.png

桥接文件是Swift调用OC所必须的,Swift中用到哪个OC类,就需要在桥接文件中import该OC类的头文件,如下图:

10011855_qyah.png
Snip20160919_11.png

然后在Swift中就可以使用OC类,但是语法方式必须是Swift的语法,如下图:

10011856_P7L7.png
Snip20160919_12.png

总结:
1.Swift调用OC类,必须要有桥接文件,且在桥接文件中importOC类的头文件。
2.Swift中调用的OC类,需要使用Swift语法。

OC调用Swift

我们在我们想要调用Swift类的方法里面引入头文件:”Product Module Name-Swift.h”,其中Product Module Name替换成项目名称(SwiftAndOC),如下图:

10011856_4PNG.png
Snip20160919_16.png

注意:import这个文件没有补全提示,需要我们自己写出来。
OC中调用Swift类

10011857_7LFH.png
Snip20160919_17.png

注意:Product Module Name-Swift.h(例子中的是SwiftAndOC-Swift.h),是由编译器自动生成的,如果import后没有提示,编译一下。并且只有在工程中包含至少一个Swift文件的时候,才会自动生成这个文件,所以如果工程中如果没有Swift文件的时候,就算在配置中设置对了,import该文件也会报错,这很好理解,OC调用Swift,项目中都没有Swift文件,谈何调用Swift。

总结:
1.保证项目中至少包含一个swift文件。
2.Product Module Name-Swift.h是自动生成的。
3.哪个OC文件中用到了Swift类,就需要在OC文件中import编译器自动生成的Product Module Name-Swift.h。

文/VV木公子(简书作者)
PS:如非特别说明,所有文章均为原创作品,著作权归作者所有,转载转载请联系作者获得授权,并注明出处,所有打赏均归本人所有!
如果您是iOS开发者,或者对本篇文章感兴趣,请关注本人,后续会更新更多相关文章!敬请期待!

转载于:https://my.oschina.net/u/3579120/blog/1533307

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值