怎么让一个项目里swift与OC可以兼容混合开发?
在苹果推出了swift语言之后,很多人担心OC很快会被取代,但是苹果方面表示2年内不会摒弃OC。但现在也快了啊。有的开发团队已经开始基于swift开发,但是有很多旧的框架还没来得及用swift写出来,并且某些swift的功能你还不会写,想用OC写。因此在swift开发的程序中时不时会用到OC的类,怎么让两门语言在一个程序里无缝衔接? 其实很方便
如果你不是在董铂然博客园看到本文请 点击查看原文
如图这是一个新建的swift项目,里面直接拖入了一个SVProgressHUD框架

因为swift语言里,同一个项目内的文件基本会放在同一个命名空间下,所以用项目中某类的方法都是不用导入头文件的,这的确很方便。
但是拖入了OC框架后想用OC框架里的方法时,你导入框架的头文件到ViewController.swift 会报错的,这就不截图了。
解决方案是 新建一个Header File文件

如图建好之后,在这个文件里导入框架。

接下来,到项目部署里引用此文件

模仿图中的路径,就是这个项目的文件夹下的Head File文件
cmd+B 变异一下 如果success就说明到这你都没有写错。
然后在ViewController.swift文件里,用swift的格式来调用这个方法
比如写一个点击方法(切记不用导入头文件!只需要直接写这个方法)
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
SVProgressHUD.show()
}
运行后点击一下

到此就完成了OC与swift之间的桥接。HUD指示器框架已经和swift项目无缝衔接。 后续如果还有别的OC类 那就把头文件导入到这个 Demo-Bridge.h文件里,就能在项目的其他地方用swift的语法(也就是点语法)调用了。 这里要切记。1.不要用OC语法调用。 2.不要在swift后缀的文件里导入任何头文件。
如果你不是在董铂然博客园看到本文请 点击查看原文
当然这篇文章用到的环境是最新的XCode6.3 beta2. 模拟器和SDK都是iOS8.3。 如果低版本的Xcode在桥接时遇到种种问题,请升级或下载到最新版本开发,因为swift语言每个版本还有微调的。
怎么让一个项目里swift与OC可以兼容混合开发?的更多相关文章
- 项目里面Swift和OC 交叉使用
在OC的项目中使用Swift 语言开发 创建swift文件,同时创建桥接文件.(桥接文件里面不用导入头文件) 在swift文件中完成代码的编写. 在某OC类的.m文件中,使用swift文件.方法;#i ...
- 在github新建一个项目里需要哪些文件及作用
1.README.md文件 关于项目的介绍和使用方法. 2. .gitignore文件 上传项目时不需要传的文件,最常用的就是“node_modules/",如下: 详细的介绍可以去git ...
- 一个项目里,httpclient竟然出现了四种
有网友提问: 今年年初,到一家互联网公司实习,该公司是国内行业龙头.不过技术和管理方面,却弱爆了.那里的程序员,每天都在看邮件,查问题工单.这些问题,多半是他们设计不当,造成的.代码写
- OC与swift混编 #import "项目名-Swift.h"失效问题
由于项目多个环境部署,每次改配置比较麻烦,所以线上环境一个TARGETS,内部环境一个TARGETS, 都知道oc和swift混编的时候,会生成一个'项目名-Swift.h'文件,这个文件是隐式的,需 ...
- Swift和Objective-C混合编程——Swift调用OC
在iOS应用的开发中.Swift必将代替OC,两者的趋势是"短期共存,长期代替".但曾经有太多的代码是用OC语言完毕的,而Swift的开发也从 OC中继承了非常多的特性.两者也是有 ...
- Swift与OC的相互调用
Swift经过四年的发展已经趋于成熟,是时候学一下了,感谢公司swift大佬的不吝赐教.心有所感记录一下,如有不足欢迎指正批评. 新建swift项目 新建Swift.OC类文件 可在新建OC文件时,建 ...
- 在项目里交叉使用Swift和OC【转】
Swift and Objective-C in the Same Project在项目里交叉使用Swift和OC Swift与OC的兼容性使得你可以在项目里使用Swift+OC的方式编写应用程序,称 ...
- 在项目里交叉使用Swift和OC
Swift and Objective-C in the Same Project 在项目里交叉使用Swift和OC Swift与OC的兼容性使得你能够在项目里使用Swift+OC的方式编写应用程序, ...
- 在OC项目中实现swift与oc混编 相互引用
--------------------------------------------------------Begin--------------------------------------- ...
随机推荐
- 【GIT】Github上传本地代码详解
本教程结合Github服务端和客户端完成本地代码上传至Github,下面进行详细讲解: 1.创建Github账号,这一个步骤应该不用太多解释,直接上官网进行注册登录即可https://github.c ...
- js基础篇——encodeURI 和encodeURIComponent
转自zccst的又一次掉进encodeURIComponent的坑里了 问题: ajax.get ( url+'?k1'=v1+'&k2'=v2+'&k3'=v3, ... ); 由于 ...
- 如何做好一个ORM框架
很多人都不太认可以第三方ORM,因为考虑的点不够全面,没有用户群体大的ORM有保证,这点是不可否认确是事实. 但是往往用户群体大的ORM又有不足之处,就拿用户群体最多的两个ORM来说一下吧 1.EF ...
- Python性能提升小技巧
第一部分 1-使用内建函数: 你可以用Python写出高效的代码,但很难击败内建函数. 经查证. 他们非常快速 2-使用 join() 连接字符串. 你可以使用 + 来连接字符串. 但由于string ...
- 8.Fluent API in Code-First【Code-First系列】
在前面的章节中,我们已经看到了各种不同的数据注解特性.现在我们来学习一下Fluent API. Fluent API是另外一种配置领域类的方式,它提供了更多的配置相比数据注解特性. Mappings[ ...
- 【原创】Kakfa common包源代码分析
初一看common包的代码吓了一跳,这么多scala文件!后面仔细一看大部分都是Kafka自定义的Exception类,简直可以改称为kafka.exceptions包了.由于那些异常类的名称通常都定 ...
- 百度地图API实现地图定位
1.引用JS: <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0& ...
- CSS使图片变灰
为了悼念,各大网站都纷纷将自己的站点颜色调灰,就连图片也一样,到底如何实现的呢,请看下面的代码. 〈img src="http://hovertree.com/hvtimg/201512/f ...
- cefglue埋坑记录
很少写博客,写的不好,请多多包含,主要是记录工作中的一些问题,和园子里朋友一起讨论学习. 写埋坑记录之前,我先介绍下为什么会使用这个webkit内核的浏览器组件,我是wpf项目使用富文本编辑器,话说w ...
- Java并发编程:并发容器之ConcurrentHashMap(转载)
Java并发编程:并发容器之ConcurrentHashMap(转载) 下面这部分内容转载自: http://www.haogongju.net/art/2350374 JDK5中添加了新的concu ...