前言:

我们在一些情况下,仅仅使用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中不需要!大家知道就好。

详解Swift和OC的混编的更多相关文章

  1. Swift _ OC _ 混编

    Swift _ OC _ 混编 在OC环境下使用Swift. GitHub源码

  2. iOS开发--Swift 如何完成工程中Swift和OC的混编桥接(Cocoapods同样适用)

    由于SDK现在大部分都是OC版本, 所以假如你是一名主要以Swift语言进行开发的开发者, 就要面临如何让OC和Swift兼容在一个工程中, 如果你没有进行过这样的操作, 会感觉异常的茫然, 不用担心 ...

  3. iOS开发——MVC详解&Swift+OC

    MVC 设计模式 这两天认真研究了一下MVC设计模式,在iOS开发中这个算是重点中的重点了,如果对MVC模式不理解或者说不会用,那么你iOS肯定学不好,或者写不出好的东西,当然本人目前也在学习中,不过 ...

  4. swift和oc的混编

    一.Swift工程中加入oc代码 1.在将oc代码加入到Swift工程的时候Xcode会自动创建一个桥接文件“yourProgectName-Bridging-Header.h”,如果没有创建或者删除 ...

  5. swift实现与OC的混编

    swift与OC的混编 现在写swift,很多的类库还不是很全,很多的第三方还是只有OC版的,这个时候swift想用,通常都是采用的swift和OC混编的方式.这里给大家演示一下混编是如何做的. sw ...

  6. 详解 swift2.2 和 OC 的混编

    前言: 我们在一些情况下,仅仅使用swift 是无法完成一个项目的,在swift项目中必要用到 OC 实现一些功能,比如,项目要使用一些第三方的框架,但这个第三方的框架却是用 OC 实现的,或者你的项 ...

  7. swift objective-及c语言 混编

    在xocde6出来我们大部分代码都是用objective-c写的(部分C/C++),现在出生来了一个新的语言叫swift,那么如何既能使用我们之前的代码,还可以使用新语言呢, 本文就此做一下说明. 关 ...

  8. 开发 Swift 和 Objective-C 混编的 Framework

    来源:黄文臣 blog.csdn.net/hello_hwc/article/details/58320433 前言 为什么要写这样一篇文章,因为昨天和一个朋友讨论到Swift和Objective C ...

  9. obeject-c 与 swift 混编

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 } p.p2 ...

随机推荐

  1. Linux设置运行core dump

    系统配置vim /etc/sysctl.conf kernel.core_uses_pid = kernel.core_pattern = %e-core-%p-%t sysctl -p检查有没有生效 ...

  2. net user

    net user 编辑 Net User命令是一个DOS命令,必须在Windows nt以上系统的MS-DOS模式下运行,所以首先要进入MS-DOS模式:选择“开始”菜单的“附件”选项的子选项“命令提 ...

  3. Android开发环境安装经验

    前段时间在一个安装论坛上,下载了老罗的Android学习视频,看到第三节就卡住了。我这边Eclipse安装SDK总是不成功,报各种错误。断断续续好几天的摸索,终于弄明白了。 首先要安装ADT插件,也就 ...

  4. leetcode 【 Reverse Words in a String 】python 实现

    题目: Given an input string, reverse the string word by word. For example,Given s = "the sky is b ...

  5. selenium 浏览器驱动下载地址

    谷歌浏览器驱动下载http://chromedriver.storage.googleapis.com/index.html 火狐浏览器驱动下载http://ftp.mozilla.org/pub/f ...

  6. Halcon18 Mac os 下载

    Halcon18 Mac os 下载地址:http://www.211xun.com/download_page_15.html HALCON 18 是一套机器视觉图像处理库,由一千多个算子以及底层的 ...

  7. Servlet+Json代码

    package com.brmoney.servlet; import java.io.IOException; import java.io.PrintWriter; import java.uti ...

  8. linux系统mysql密码修改脚本

    编写了一个适用于阿里云linux系统 mysql密码修改脚本,使用阿里云提供的一键安装包配置后,如果account.log文件删除,并且忘记mysql密码时,可以通过脚本来重置mysql密码. 附:一 ...

  9. iOS开发UI篇—自定义layer

    一.第一种方式 1.简单说明 以前想要在view中画东西,需要自定义view,创建一个类与之关联,让这个类继承自UIView,然后重写它的DrawRect:方法,然后在该方法中画图. 绘制图形的步骤: ...

  10. 【bzoj1189】[HNOI2007]紧急疏散evacuate BFS最短路+动态加边网络流

    题目描述 发生了火警,所有人员需要紧急疏散!假设每个房间是一个N M的矩形区域.每个格子如果是'.',那么表示这是一块空地:如果是'X',那么表示这是一面墙,如果是'D',那么表示这是一扇门,人们可以 ...