详解 swift2.2 和 OC 的混编
前言:
我们在一些情况下,仅仅使用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中不需要!大家知道就好。
详解 swift2.2 和 OC 的混编的更多相关文章
- swift实现与OC的混编
swift与OC的混编 现在写swift,很多的类库还不是很全,很多的第三方还是只有OC版的,这个时候swift想用,通常都是采用的swift和OC混编的方式.这里给大家演示一下混编是如何做的. sw ...
- Swift _ OC _ 混编
Swift _ OC _ 混编 在OC环境下使用Swift. GitHub源码
- 详解Swift和OC的混编
前言: 我们在一些情况下,仅仅使用swift 是无法完成一个项目的,在swift项目中必要用到 OC 实现一些功能,比如,项目要使用一些第三方的框架,但这个第三方的框架却是用 OC 实现的,或者你的项 ...
- iOS开发--Swift 如何完成工程中Swift和OC的混编桥接(Cocoapods同样适用)
由于SDK现在大部分都是OC版本, 所以假如你是一名主要以Swift语言进行开发的开发者, 就要面临如何让OC和Swift兼容在一个工程中, 如果你没有进行过这样的操作, 会感觉异常的茫然, 不用担心 ...
- OC+swift混编
作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/34440159 转载请注明出处 如果觉得文章对你有所帮助,请通过留言 ...
- oc swift 混编 特技
1.swift 工程新建oc文件,新建的时候提示是否桥接文件,点击yes,把swift要用的oc文件的头文件 都导入桥接文件中就OK了. 2.在swift工程中oc调用 swift文件,需要在导入名字 ...
- swift和oc的混编
一.Swift工程中加入oc代码 1.在将oc代码加入到Swift工程的时候Xcode会自动创建一个桥接文件“yourProgectName-Bridging-Header.h”,如果没有创建或者删除 ...
- OC Swift混编-Swift.h File not found
https://www.jianshu.com/p/f860fe1718ca 2016.09.13 11:53* 字数 266 阅读 1935评论 1喜欢 1 今天碰到个神坑,本人项目是OC项目,最近 ...
- iOS 静态类库 打包 C,C++文件及和OC混编
iOS 静态类库 编译 C,C++ 我们都知道,OC 原生支持C, 在 创建的 OC类的 .m 里面,可以直接编写C的代码: 同样 Xcode 也支持 OC ,C++的混编,此时,我们通常把OC创建的 ...
随机推荐
- CodeForces 629C Famil Door and Brackets
DP. 具体做法:dp[i][j]表示长度为 i 的括号串,前缀和(左括号表示1,右括号表示-1)为 j 的有几种. 状态转移很容易得到:dp[i][j]=dp[i - 1][j + 1]+dp[i ...
- android中广播的使用
广播消息机制用于进行系统级别的消息通知,每个应用程序可以对感兴趣的广播进行注册,并且将接收广播的方法定义在广播接收器中(Broadcast). 广播可以分为标准广播和有序广播. 注册广播的方法可以动态 ...
- 学习wcf
链接请看下面 第一部分:http://boytnt.blog.51cto.com/966121/796884 第二部分:http://boytnt.blog.51cto.com/966121/7969 ...
- 利用openURL,在IOS应用中打开另外一个应用
在IOS中,实现一个应用启动另外一个应用,使用UIApplication的openURL:方法就可实现,这里以test跳到test02为例.(需要先创建这两个工程) 注册自定义URL协议(在test中 ...
- jquery-ui-widget
编写jQueryUI插件(widget) 使用jQueryUI的widget来写插件,相比于基本的jquery插件有一些好处: * 方便实现继承,代码重用 * 默认是单例 * widget已经给你实现 ...
- CSS 弹性盒子布局
学习地址:https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout
- python模块的打包setuptools
样例代码:新建test.py文件,内容如下: print "show me" 新建一个setup.py编译文件,内容如下: from distutils.core import s ...
- iOS + UIWebView 实践
1. 调用java script 现在只能实现弹出窗口 [self.m_webView stringByEvaluatingJavaScriptFromString:@"alert(1)&q ...
- IOS 上线问题
info.plist 是否支持后台位置 音频 Info.plist中添加UIBackgroundModes键值,它包含一个或多个string的值,包括 audio:在后台提供声音播放功能,包括音频流和 ...
- GOLang(数组操作随篇)
创建一个类似PHP Array $data["userInfo"] = ["name"=>"Josn","ages" ...