详解 swift2.2 和 OC 的混编
前言:
我们在一些情况下,仅仅使用swift 是无法完成一个项目的,在swift项目中必要用到 OC 实现一些功能,比如,项目要使用一些第三方的框架,但这个第三方的框架却是用 OC 实现的,或者你的项目必须调用原有项目的部分功能,而原来的项目也是用 OC 实现的。在这样的一些背景下,你就必须要实现这两种语言的混编。反过来也一样,比如开发者打算用swift实现一些新的功能要用到三方框架,而人家是使用swift写的,而你的项目确实OC的,这时候你也得实现一个混编。下面我们分两种情况分别说明一些。
一: 在 swift 项目中的混编
下面的内容我们争取说的通俗一点,其实本来也就不复杂。
在一个swift项目中,你添加一个新的文件,但这个文件可能是 OC 类型的。那编程语言你也肯定就会选择OC了,这个创建文件的时候记得,就不在累赘了。
第一次,记得是第一次的时候会有下面图片显示的一个提示;

网上也有许多的关于混编的博客,我现在用的Xcode 是最新的 7.3 的,选择 “Create Bridging Header ” 就OK了。再看下面这张图;

我直接是截图了Xcode的界面,大家可以看到多了一个我选中的这个文件,这个文件的作用 你要在swift类型的文件中用到OC的文件时候,你就把OC的头文件加到这个 新添加的文件中,如上图,我把 octestViewController.h 加到了这个文件中。然后你在swift文件中直接用这个OC类型的文件就OK了,不过语法肯定就是swift的语法了。
那如果你要在 octestViewController.m 中用swift 类型的文件怎么办呢。你先在你项目的 Build setting 中搜索一个 swift 进去,看图片;

看我选中的这行,这个有个头文件 Swift_text-Swift.h 你要在 OC 文件中加 Swift 类型的文件呢,你就把这个头文件导入到你的 OC 文件中就OK了。当然 虽然你调用的是 swift类型的文件,但你是在OC文件里面写的,语法肯定也就是 OC的语法了!
二: 在 OC 项目中的混编
其实经过我实践之后,我发现是一模一样的。你在OC项目中加swift类型文件,也会有一个桥头文件生成。你要在OC文件中用swift类型的文件呢,也一样。。在build setting 搜 swift 把头文件导入你的OC文件中,你要在swift文件中用OC类型文件呢,也是一样把 OC 类型文件的头文件导入桥头文件中就OK了,顺便说一句,我在一些书上看到的,说在 swift类 定义的前面叫 @Objc的类才能被OC类调用是不正确的,以前可能是这样子的,但在swift3.0中不需要!大家知道就好。
详解 swift2.2 和 OC 的混编的更多相关文章
- swift实现与OC的混编
swift与OC的混编 现在写swift,很多的类库还不是很全,很多的第三方还是只有OC版的,这个时候swift想用,通常都是采用的swift和OC混编的方式.这里给大家演示一下混编是如何做的. sw ...
- Swift _ OC _ 混编
Swift _ OC _ 混编 在OC环境下使用Swift. GitHub源码
- 详解Swift和OC的混编
前言: 我们在一些情况下,仅仅使用swift 是无法完成一个项目的,在swift项目中必要用到 OC 实现一些功能,比如,项目要使用一些第三方的框架,但这个第三方的框架却是用 OC 实现的,或者你的项 ...
- iOS开发--Swift 如何完成工程中Swift和OC的混编桥接(Cocoapods同样适用)
由于SDK现在大部分都是OC版本, 所以假如你是一名主要以Swift语言进行开发的开发者, 就要面临如何让OC和Swift兼容在一个工程中, 如果你没有进行过这样的操作, 会感觉异常的茫然, 不用担心 ...
- OC+swift混编
作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/34440159 转载请注明出处 如果觉得文章对你有所帮助,请通过留言 ...
- oc swift 混编 特技
1.swift 工程新建oc文件,新建的时候提示是否桥接文件,点击yes,把swift要用的oc文件的头文件 都导入桥接文件中就OK了. 2.在swift工程中oc调用 swift文件,需要在导入名字 ...
- swift和oc的混编
一.Swift工程中加入oc代码 1.在将oc代码加入到Swift工程的时候Xcode会自动创建一个桥接文件“yourProgectName-Bridging-Header.h”,如果没有创建或者删除 ...
- OC Swift混编-Swift.h File not found
https://www.jianshu.com/p/f860fe1718ca 2016.09.13 11:53* 字数 266 阅读 1935评论 1喜欢 1 今天碰到个神坑,本人项目是OC项目,最近 ...
- iOS 静态类库 打包 C,C++文件及和OC混编
iOS 静态类库 编译 C,C++ 我们都知道,OC 原生支持C, 在 创建的 OC类的 .m 里面,可以直接编写C的代码: 同样 Xcode 也支持 OC ,C++的混编,此时,我们通常把OC创建的 ...
随机推荐
- CodeForces 652A Gabriel and Caterpillar
简单模拟. #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> ...
- java 生成不重复的随机数
import java.text.SimpleDateFormat;import java.util.Date; public class Test2 { public static void mai ...
- 直流电机驱动PWM频率(转)
源:直流电机驱动PWM频率 1.没有统一的标准,其实PWM的频率和你的电机感抗和你需要的速度响应时间有很大的关系.一般的电机用14K就足够了.当然自需要简单的调速可以随便选. 如果电机转速比较高,感抗 ...
- 编写高质量JavaScript代码的基本要点记录
原文:深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 1.最小全局变量(Minimizing Globals)的重要性 JavaScript通过函数管理作用域.在 ...
- css--用户体验笔记及兼容记录
css用户体验 1.HTML的< >&"©分别是<,>,&,",©;的转义字符 2.IE8和7的透明度 filter: progid:DXI ...
- [题解]bzoj 3223 文艺平衡树
3223: Tyvj 1729 文艺平衡树 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3884 Solved: 2235[Submit][Sta ...
- ps--记录几个方法步骤
1.图片文字去掉 1.1 矩形工具-->吸管-->alt+delete 1.2 钢笔工具-->Ctrl+回车(变换选区)-->吸管-->alt+delete 2.图层锁不 ...
- HDU 1813 Escape from Tetris
TMDTMD IDA*没跑了.什么是IDA*? 就是迭代深搜+A*估个价. 然而为什么调了一天? n<=2的时候我输出了东西.... 看了一天. #include<iostream> ...
- java系列--过滤器
在web.xml配置过滤器:过滤器一定要放在所以Servlet前面 过滤器的生命周期: 过滤器的应用: 1.编码格式 2.权限验证 3.数据库关闭
- [HNOI2004]Language L语言
2777: [HNOI2004]Language L语言 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 10 Solved: 5[Submit][S ...