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++混合编程
随机推荐
- 动态规划DP入门
百度百科↓ 动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法.20世纪50年代初美国数学家R.E.Bellman ...
- 【LeetCode】467. Unique Substrings in Wraparound String
Consider the string s to be the infinite wraparound string of "abcdefghijklmnopqrstuvwxyz" ...
- c++ 四种类型转换机制
类型转换机制可以分为:隐式类型转换 和 显示类型转换(强制类型转换) C中的类型转换: 事情要从头说起,这个头就是C语言.我们已经习惯了使用C-like类型转换,因为它强大而且简单. 主要有一下两种形 ...
- SVN异常处理(五)-状态小图标不见了
1.发现问题 装了Win10,再装了Office2016等一些最新软件后,发现SVN状态小图标竟然就不见了 2.分析问题 在Window系统中,当UAC启动时,有些应用程序的图标上会显示一个盾牌,像这 ...
- Laravel5.1学习笔记11 系统架构3 服务提供者
服务提供者 简介 写一个服务提供者 Register注册方法 Boot 方法 注册提供者 缓载提供者 简介 Service providers are the central place of all ...
- activiti 表——介绍
Activiti 用到的表都是act_开头 下面分别来介绍下 activiti 所用到的表: Act_RE_* 表示 RepositoryService接口所操作的表:包含了流程定义信息 .流程静态资 ...
- 1B课程笔记分享_StudyJams_2017
课程1B 概述 课程1B主要讲解了Android UI的ViewGroups(视图组).LinearLayout(线性布局).RelativeLayout(相对布局),Portrait Mode(竖屏 ...
- jQuery——入口函数
中文网 http://www.css88.com/jqapi-1.9/ 版本兼容问题 版本一:1.x版本,兼容IE678 版本二:2.x版本,不兼容IE678 入口函数区别 <script> ...
- 比较简单的替换配置文件的shell脚本
作为测试,日常更新部署测试版本,修改配置文件是每天必不可少的一个工作.特别是如果需要更改的配置文件存在于多个文件里,更是繁琐不堪. 找了一下Linux shell脚本里有个sed 命令可以实现这个需求 ...
- unable to get system library for the project
当向eclipse导入项目实例后,项目上出现红叉的错误提示,在项目属性里的Java Build Path里发现了错误提示复选选项: unable to get system library for t ...