Swift和Objective-C混合编程——Swift调用OC
在iOS应用的开发中。Swift必将代替OC,两者的趋势是“短期共存,长期代替”。但曾经有太多的代码是用OC语言完毕的,而Swift的开发也从 OC中继承了非常多的特性。两者也是有非常多的类似之处。
眼下Swift和OC能够实现无缝的混合编程。
我这里会实现一个简单的Swift调用OC的iOS实例,实现过程是十分的简单的。
就像我们全部的Hello World一样。
详细操作过程例如以下:
(1)Xcode中新建一个iOS项目,语言选择Swift。设备选择iPhone.文件夹结构例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
(2)然后在该项目中右键New File,选择 Cocoa Touch Class, 输入类名,继承NSObject,语言选择Objective-c.选择Next后。第一次在Swift中创建OC类的时候,会弹出例如以下对话框,点击Yes就可以:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">。
(3)创建完OC类之后,项目的文件夹结构例如以下:发现文件夹结构中多了三个文件,Hello.h,Hello.m各自是我创建的OC的类,等下会用Swift来进行调用。另一个就是Bridging-Header.h,能够把这个理解为是OC和Swift之间桥接的文件。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">。
(4)然后在Bridging-Header.h,中引入OC类的头文件,代码为:#import "Hello.h"
(5)然后在OC类中实现一个简单的方法。输出一条语句,先在Hello.h中进行声明:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">。
然后在Hello.m中使用OC语法实现该方法:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">。
(6)然后在Swift的类ViewController.swift的viewDidLoad()中调用OC的方法:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">。
(7)最后执行打印结果,
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">.
至此,Swift就能方便的调用OC的代码了。
是不是非常方便的。
github主页:https://github.com/chenyufeng1991 。欢迎大家訪问!
Swift和Objective-C混合编程——Swift调用OC的更多相关文章
- Swift 与 C 语言混合编程
前言 作为一种可与 Objective-C 相互调用的语言,Swift 也具有一些与 C 语言的类型和特性,如果你的代码有需要,Swift 也提供了和常见的 C 代码结构混合编程的编程方式. 1.基本 ...
- Qt for iOS,Qt 与Objective C混合编程
项目设置 既然要聊 Qt 混合 OC 编程,首先要简单介绍一下 Objective C .我只有一句话:Go,问搜索引擎去.因为我所知实在有限,怕误导了您.当然如果您不怕,往下看吧. OC源文件介绍 ...
- 《从零开始学Swift》学习笔记(Day 71)——Swift与C/C++混合编程之数据类型映射
原创文章,欢迎转载.转载请注明:关东升的博客 如果引入必要的头文件,在Objective-C语言中可以使用C数据类型.而在Swift语言中是不能直接使用C数据类型,苹果公司为Swift语言提供与C语言 ...
- 《从零開始学Swift》学习笔记(Day 71)——Swift与C/C++混合编程之数据类型映射
原创文章.欢迎转载.转载请注明:关东升的博客 posted @ 2017-07-21 13:23 zhchoutai 阅读(...) 评论(...) 编辑 收藏
- swift 与 OC 混合编程
原文地址:http://www.cocoachina.com/swift/20150608/12025.html 一.解决问题 Swift项目需要使用封装好的Objective-c组件.第三方类库,苹 ...
- Objective-C与Swift的混合编程
Swift 被设计用来无缝兼容 Cocoa 和 Objective-C .在 Swift 中,你可以使用 Objective-C 的 API(包括系统框架和你自定义的代码),你也可以在 Objecti ...
- 混合编程:如何用python11调用C++
摘要:在实际开发过程中,免不了涉及到混合编程,比如,对于python这种脚本语言,性能还是有限的,在一些对性能要求高的情景下面,还是需要使用c/c++来完成. 那怎样做呢?我们能使用pybind11作 ...
- Matlab与.NET基于类型安全的接口混合编程入门
原文:[原创]Matlab与.NET基于类型安全的接口混合编程入门 如果这些文章对你有用,有帮助,期待更多开源组件介绍,请不要吝啬手中的鼠标. [原创分享]Matlab.NET混编调用Figure窗体 ...
- 深入理解C/C++混合编程优秀博文赏析与学习
1.深入理解C/C++混合编程 2.C/C++ 混合编程 互相调用 3.C代码中如何调用C++ C++中如何调用C 4.C和C++混合编程
随机推荐
- jmeter 3.x plugins 的使用
JMeter Plugins 一直以来,JMeter Plugins为我们提供了很多高价值的JMeter插件,比如: 用于服务器性能监视的PerfMon Metrics Collector 用于建立压 ...
- 【转】linux read 用法
转自:http://www.cnblogs.com/iloveyoucc/archive/2012/04/16/2451328.html 1.基本读取 read命令接收标准输入(键盘)的输入,或其他文 ...
- jsp动态网页开发基础
JSP基础语法 jsp页面元素构成 jsp页面组成部分有:指令,注释,静态内容,表达式,小脚本,声明. 1.表达式<%= %> 2.小脚本<% %> 3.声 ...
- Jquery 实现列表的显示和隐藏
本人github源码下载地址:https://github.com/liuyanpeng521/ListChange.git
- Xml的读取
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace WebAp ...
- STL之string篇
常用代码整理: #include<iostream> #include<cstdio> #include<cstring> #include<string&g ...
- THREE.js代码备份——webgl - scene animation(通过加载json文件来加载动画和模型)
<!DOCTYPE html> <html lang="en"> <head> <title>three.js webgl - sc ...
- 【sqli-labs】 less59 GET -Challenge -Double Query -5 queries allowed -Variation2 (GET型 挑战 双查询 只允许5次查询 变化2)
整型的注入 http://192.168.136.128/sqli-labs-master/Less-59/?id=1 or UpdateXml(1,concat(0x7e,database(),0x ...
- MFC cstring 型转化成 double型
cstring szNum; GetDlgItemText(IDC_EDIT1, szNum); double Num; Num = _ttol(szNum); 转化成长整型 Num = _tstof ...
- 10java内存
java内存 1.栈---存储的是变量(不仅仅只有变量),不会对存储的内容进行赋值,存储的内容使用完成之后会立即进行清除 2.堆---存储的是对象.会对存储的内容进行赋值,存储内容使用完成之后会在某个 ...