文档章节

Swift和OC互调

AllenOR灵感
 AllenOR灵感
发布于 2017/09/10 01:17
字数 724
阅读 1
收藏 0

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

(一)Swift调用OC

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


新建Swift项目.png


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


Snip20160919_9.png

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


添加桥接文件.png

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


Snip20160919_10.png

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


Snip20160919_11.png

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


Snip20160919_12.png

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

OC调用Swift

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


Snip20160919_16.png

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


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开发者,或者对本篇文章感兴趣,请关注本人,后续会更新更多相关文章!敬请期待!

本文转载自:http://www.jianshu.com/p/119dfefae6cc

AllenOR灵感
粉丝 11
博文 2635
码字总数 83001
作品 0
程序员
私信 提问
Swift 和 OC 方法互调--SwiftAndOC

SwiftAndOC 是一个Swift 和 OC 方法互调Demo。 Demo功能: 1.在OC项目里: 1.1.OC代码调用Swift方法 1.2.Swift代码调用OC代码。 2.在Swift项目: 2.1.Swift代码调用OC代码 2.2.OC代码调用Swift...

匿名
2016/08/05
279
0
swift-framework中objective-c与swift互调

swift-framework中objective-c与swift互调 ksnowlv2017-12-292 阅读 frameworkcswift swift-framework中objective-c与swift互调实际上与普通工程中的互调类似。 背景:YKDeviceInfo为objecti......

ksnowlv
2017/12/29
0
0
Swift2.0与OC混编实验--动态库(一)

完整的Demo下载 做了以下几个实验 验证Swift和OC的项目可以使用任意语言开发的动态库 1、创建了一个Swift语言的动态库 2、创建了一个OC语言的动态库 3、创建了一个SwiftApp项目,在项目中同时...

泊竹
2016/01/17
459
0
rattan/OCBridgeSwiftToCall

OCBridgeSwiftToCall[OC与swift的数据传输] ##简介 该项目主要介绍了oc与swift之间、swift内部几种常见的传值方式(属性传值、代码块传值、代理传值、通知) 如果oc与swift之间的桥接有疑问请...

rattan
04/19
0
0
Swift实际开发中遇到的小问题

从上周开始, 正式使用Swift语言进行实际项目的开发, 虽然之前Swift的语法已经了解过, 并且写过几个简单的小Demo, 但是在实际应用到了公司项目中还是遇到了一些小问题. 主要是Swift与OC语法对...

Sunxb
2016/12/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

for循环

九九乘法表 示例:for(int i = 1; i <= 9; i++){ for (int j = 1; j <= i; j++) { // 每次开始i循环,j都会重新定义为j=1,然后开始循环计算 System.out.print(j +......

Shutting
11分钟前
3
0
小王子1

一定要帅! 韩国设计师品牌 insgram全世界得网红 韩国潮男穿搭 HM 找到穿衣服最好看的人,跟他比,比他好看。 在兴趣前,不要表现目的性,压力 关系是不热就冷的! 不喜欢压力,不喜欢负责任...

阿锋zxf
29分钟前
6
0
时间戳

1 loadTimeString(ts) { var d = new Date(); if (String(ts).length == 10) { d = new Date(ts * 1000); ......

东方巨人
31分钟前
4
0
Redis Cluster

Redis Cluster 集群 redis集群有以下几种方式 普通一主多从 普通一主多从+哨兵 cluster分片模式 一主多从 搭建方式网上很多,就不多描述了。 这种集群方式,一般master用作写,slave用做读,...

lazy~
32分钟前
6
0
 介绍一款优秀的通用管理权限快速开发框架

这是一套以权限管理为主的轻量化快速开发框架,配置有流程、专业表单、权限、app、企业微信等基础功能模块,在开发通用软件的效率上很有优势。 软件平台常用研发需求分析 《那些年我们一起做...

我想造火箭
48分钟前
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部