详解 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创建的 ...
随机推荐
- STM32-NVIC中断管理实现[直接操作寄存器]
源:stm32 NVIC中断管理实现[直接操作寄存器] cortex-m3支持256个中端,其中包含了16个内核中断,240个外部中断.stm32只有84个中断,包括16个内核中断和68个可屏 ...
- iOS开发——绘图电池按百分比显示
1.在DrawLine.h文件中提供了一个改变电池电量数值的接口 // // DrawLine.h // Demo-draw2 // // Created by yyt on 16/5/11. ...
- LPC1768的USB-相关结构体定义
#ifndef __USB_H__ #define __USB_H__ //usb传输数据的宏定义描述 #include "sys.h" typedef __packed unio ...
- MIPI-1
未来的产品都将朝着移动的方向发展,例如智能手机.数码相机.摄像机.平板电脑.媒体播放器.游戏机等,这些产品需要能执行多任务,包括处理多个不同的传感器如麦克风.图像传感器.磁罗盘.三轴加速度计和精细的触 ...
- PHP内核变量存储
PHP作为一门弱类型语言,其变量类型可任意改变.而C作为PHP的底层实现,是通过结构及联合来实现PHP变量的弱类型特性的.在PHP源码中,Zend/zend.h文件有关于PHP变量的结构定义. 01 ...
- RabbitMQ消息队列(九):Publisher的消息确认机制
在前面的文章中提到了queue和consumer之间的消息确认机制:通过设置ack.那么Publisher能不到知道他post的Message有没有到达queue,甚至更近一步,是否被某个Consum ...
- android 多线程Thread,Runnable,Handler,AsyncTask
先看两个链接: 1.http://www.2cto.com/kf/201404/290494.html 2. 链接1: android 的多线程实际上就是java的多线程.android的UI线程又称 ...
- 二级横向菜单实现——ListView
实现类似于大众点评客户端的横向listview二级列表 这种横向的listview二级列表在手机软件上还不太常见,但是使用过平板的都应该知道,在平板上市比较常见的.可能是因为平板屏幕比较大,而且也能展 ...
- php 特别的函数
call_user_func函数和call_user_func_array函数 set_include_path
- php字符串比较
比较两个字符串是否相等,最常见的方法就是使用“===”来判断,至于它和“==”的区别,简单来说 就是前者强调“identical”类型也要求一样:后者要求“equal”,值相同就可以了.或者使用str ...