Swift 被设计用来无缝兼容 Cocoa 和 Objective-C 。在 Swift 中,你可以使用 Objective-C 的 API(包括系统框架和你自定义的代码),你也可以在 Objective-C中 使用 Swift 的 API。这种兼容性使 Swift 变成了一个简单、方便并且强大的工具集成到你的 Cocoa 应用开发工作流程中。下面通过一个案例演示,实现Swift与Object-C的混合编程。

步骤一:创建工程文件,名为Person。注意选择编程语言为Swift。

步骤二:接下来就是要实现OC跟Swift的混合编程啦!首先创建一个Person类将他加入到工程中,语言选择为:Objective-C

步骤三:单击Finsh按钮,会出现下图中的提示框,此处单击YES,系统会自动生成桥接文件。

这是可以看到,系统已经创建出一个名为Person-Bridging-Header.h文件啦!,然后选中该文件将#import "Person.h"包含进去

这是我们拷贝下系统创建的桥接文件名,在工程中进行搜索,可以看到配置文件

步骤四:Person类创建好后,我们先不用去写代码,接下来再去创建一个House类,不过此类是Swift语言编写的。

在House类中,定义成员变量,初始化方法,以备Person类调用。

为防止后期,连接时无法使用,此处对该文件进行编译,如下图。

步骤五:剩下来要做的工作就是编写代码啦!手写在Person类中使用前向声明调用House,然后声明几个成员变量,

为之后测试做准备,在Person.m文件中去重写description方法,下图中的选中部分,是系统桥接时生成的文件。

步骤六:在控制器中使用Person和House

步骤七:打印输出结果

Objective-C与Swift的混合编程的更多相关文章

  1. IOS-Swift、Objective-C、C++混合编程

    1.Objective-C调用C++代码 后缀为m文件的是Objective-C的执行文件,而后缀为mm文件的是Objective-C++文件. 直接在Objective-C中是无法调用C++代码的, ...

  2. swift 与 OC 混合编程

    原文地址:http://www.cocoachina.com/swift/20150608/12025.html 一.解决问题 Swift项目需要使用封装好的Objective-c组件.第三方类库,苹 ...

  3. Objective-C:swift、objective-c、C++、C混合编程

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css); @import url(/ ...

  4. Swift 与 C 语言混合编程

    前言 作为一种可与 Objective-C 相互调用的语言,Swift 也具有一些与 C 语言的类型和特性,如果你的代码有需要,Swift 也提供了和常见的 C 代码结构混合编程的编程方式. 1.基本 ...

  5. Swift和Objective-C混合编程——Swift调用OC

    在iOS应用的开发中.Swift必将代替OC,两者的趋势是"短期共存,长期代替".但曾经有太多的代码是用OC语言完毕的,而Swift的开发也从 OC中继承了非常多的特性.两者也是有 ...

  6. iOS自学-混合编程

    OC调用swift,引入头文件 #improt "工程名字-swift.h" swift调用OC,在桥梁文件里面引入OC文件 的头文件 尽情混合编程吧...

  7. iOS- Swift和Object-C的混合编程

    1.前言   事实证明,在短时间内Swift还取代不了Object-C, 而且.... Apple Swift 开发小组的人说的:「We'll recommend people start with ...

  8. 如玫瑰一般的PHP与C#混合编程

    故事背景是这样的,有一套项目,服务器端是用C#写的,为了完成某种事情,它需要使用到一个组件,这个组件很小但很重要,很不巧的是,这个这个组件是用PHP语言写的,如果为了使用这个组件而专门搭建一个PHP的 ...

  9. C和C++混合编程中的extern "C" {}

    引言 在用C++的项目源码中,经常会不可避免的会看到下面的代码: 1 2 3 4 5 6 7 8 9 #ifdef __cplusplus extern "C" { #endif ...

随机推荐

  1. jquery中end()方法的解释

    来源:http://www.jquery001.com/jquery-end-method.html 对于end()方法,jQuery文档是这样解释的:jQuery回到最近的一个"破坏性&q ...

  2. 在程序内部使用winGraphviz进行图形自动布局

    winGraphviz支持內部圖形形狀進行佈局圖輸出.當然,在我們程序內部並不需要這樣的一個圖,因為我們的圖可能需要其它的繪製元素,而且我們還會在圖形上進行拖動.放大.縮小等功能,一張簡單的佈局圖是不 ...

  3. Android开发:《Gradle Recipes for Android》阅读笔记(翻译)4.1——编写自己的任务

    问题: 你想用自己的任务定制gradle的构建过程. 解决方案: 在gradle的build文件里面增加task元素.用Android插件支持的extra属性使得开发更容易. 讨论: Gradle的D ...

  4. JS实现当鼠标移动到图片上时,时图片旋转

    <div id="container" style="width:500px;height:400px;position:relative;margin:0 aut ...

  5. RedHat6/Centos6.5安装mongodb php driver

    条件: 安装apache 安装php 1.下载mongodb phh driver 下载地址:pecl wget http://pecl.php.net/get/mongo-1.5.8.tgz 2.解 ...

  6. CSS3 Flex布局(容器)

    一.flex-direction属性 row(默认值):主轴为水平方向,起点在左端. row-reverse:主轴为水平方向,起点在右端. column:主轴为垂直方向,起点在上沿. column-r ...

  7. Maven学习笔记【1】 -- Maven简介

    本文主要讲Maven的基础知识. 一 什么是Maven? Maven是一个项目管理工具.Maven提供了一个项目对象模型(POM)文件的新概念来管理项目的构建,相关性和文档.最强大的功能就是能够自动下 ...

  8. Nuxt使用高德地图

    事先准备 注册账号并申请Key 1. 首先,注册开发者账号,成为高德开放平台开发者 2. 登陆之后,在进入「应用管理」 页面「创建新应用」 3. 为应用添加 Key,「服务平台」一项请选择「 Web ...

  9. Linux运维-zabbix_agent最新版的yum安装

    agentd端可以直接使用yum来进行安装 rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1. ...

  10. Django~表的操作

    增(create  ,  save) from app01.models import *   #create方式一:   Author.objects.create(name='Alvin')    ...