objc swift 混编
原链接:http://blog.csdn.net/xuanwenchao/article/details/30226823
在xocde6出来我们大部分代码都是用objective-c写的(部分C/C++),现在出生来了一个新的语言叫swift,那么如何既能使用我们之前的代码,还可以使用新语言呢, 本文就此做一下说明。
关于swift语方的学习可以看文档 The Swift Programming Language 本文假设你已经有所了解,下面基于当前您当前在做的objective-c来做swift扩展, 假设我们想要用swift在原来的工程中做一个新的view界面, 这个view会用到原有的objective-c中的类,最终将这个新的view 再加到我们现有工程中。
首先看官方说明, 两种语是可以同时存在同一个工程中, 不论这个工程是基于哪一种语言创建的, 都可以加入另一个语言,使他们同时存在同一个工程中进行混合编译。
1. 我们添加swift类到现有的objective-c工程中。CMD+N 如下所示
2.点Next后 输入sfLoginView 语言选择swift
3.点Next后 会弹出堤示,是否创建桥接文件,只有第一次创建时才会出现, 创建第二个类时如果之前已经创建就不会有提示了, 该文件被用来在swift中使用objective-c的类时,引入头文件。
4.点击 YES后就创建了两个文件,如下图所示,我的工程名叫SePass,生成的桥接文件叫SePass-Bridging-Header.h
5.打开sfLoginView.swift文件,创建一个我们的swift类,当然你也可以使用playground文件来编辑后再copy到swift文件中。
6. 现在假设我们需要在swift中使用一个objective-c的一个类,叫GTMBase64, 此时我们只要打开刚才生成的桥接文件SePass-Bridging-Header.h 在里面引用我们想要的头文件。
7. 引用头文件后,就可以直接用该类了。
var imageData:NSData =GTMBase64.decodeString(g_DataImageKey)
8. 现在我们用swift编写的类sfLoginView已经完成了,接下来我们要在现有的objective-c中引用我们的swift编写的类了, 因为swift类自己没有头文件,我们无法直接import过来, 所以我们要帮助他生成一个可以引用的头文件,点工程文件->选targets -> BuildingSettings -> Product Module Name 我们输入whatwhatwhat 再将 Defines Module = YES
9. 此时XCode会生成一个头文件,whatwhatwhat-swift.h 我们只在要需要使用sfLoginView的oc.m文件中引用这个头文件后,就可以使用sfLoginView类了
#import "whatwhatwhat-swift.h"
10. 我们再来看下人whatwhatwhat-swift.h中是什么内容
看来是系统帮助我们生成了, 对应swift类的objective-c的类实现方式
11.下面是官方说明, 一旦你导入swift代码到你的工程后,你就可以使用标准ocjective-c来操作swift类
至此任务完成, 匆忙打字编辑,如果有写的不对的, 欢迎批评指正交流。
QQ:407300101
objc swift 混编的更多相关文章
- [ios][swift]swift混编
http://blog.csdn.net/iflychenyang/article/details/8876542(如何在Objective-C的头文件引用C++的头文件) 1.将.m文件扩展名改为. ...
- obeject-c 与 swift 混编
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 } p.p2 ...
- Swift语言学习之OC和Swift混编
本文转自http://www.helloswift.com.cn/swiftbase/2015/0112/3469.html iOS OC和Swift混编 1.创建一个swift或者oc的工程:我这里 ...
- Objective-C 和 Swift 混编项目的小 Tips(一)
本文主要闲聊一些 Objective-C 和 Swift 混编项目带来的一些潜规则,希望能帮到对此感到疑惑的朋友.下面我们开始进入主题: 命名 官方 Guide 上只是简单叙述(Using Swift ...
- OC跟Swift混编
OC项目中使用Swift 本文版权归作者所有,如需转载请联系孟祥月 CSDN博客:http://blog.csdn.net/mengxiangyue 独立博客:http://mengxiangyue ...
- OC与swift混编 #import "项目名-Swift.h"失效问题
由于项目多个环境部署,每次改配置比较麻烦,所以线上环境一个TARGETS,内部环境一个TARGETS, 都知道oc和swift混编的时候,会生成一个'项目名-Swift.h'文件,这个文件是隐式的,需 ...
- IOS --- OC与Swift混编
swift 语言出来后,可能新的项目直接使用swift来开发,但可能在过程中会遇到一些情况,某些已用OC写好的类或封装好的模块,不想再在swift 中再写一次,哪就使用混编.这个在IOS8中是允许的. ...
- 【转】IOS --- OC与Swift混编
群里大神发的网址,感觉有用就先收录了,暂时没时间看SWIFT,感觉代码简洁,但是可阅读性不是太高,有些代码让系统去判断类型,同样的,我们看代码的时候也得自己去判断类型,或许看多就习惯了,有时间再说吧, ...
- OC与Swift混编
群里大神发的网址,感觉有用就先收录了,暂时没时间看SWIFT,感觉代码简洁,但是可阅读性不是太高,有些代码让系统去判断类型,同样的,我们看代码的时候也得自己去判断类型,或许看多就习惯了,有时间再说吧, ...
随机推荐
- PHP变量名区分大小写,函数名不区分大小写
PHP变量名区分大小写,函数名不区分大小写,经常被新手忽视的小细节,测试如下. PHP变量名区分大小写测试: <?php $aaa = "phpddt.com"; $AAA ...
- Windos中无法删除桌面IE图标的解决方法
解决方法其实并不难,打开注册表,转到如下图的位置,详细地址在图片最下面: 需要注意的是,你需要在NameSpace中逐个查看各个项目的数据值,显示为数据值为Internet Explorer的项目即为 ...
- GUID,UUID
<? class System { function currentTimeMillis() { list($usec, $sec) = explode(" ",microt ...
- .Net异步编程之Async与Await的使用
参考教程:http://www.cnblogs.com/x-xk/archive/2013/06/05/3118005.html http://www.cnblogs.com/tdws/p/56790 ...
- 【C#】 装箱 (boxing) 和拆箱 (unboxing)
目录: 1. 装箱和拆箱 2. 深入理解装箱和拆箱 3. int[] to object[],值类型数组到对象数组的转化 4. 使用泛型减少装箱和拆箱 1. 装箱和拆箱 装箱 就是把“值类型”转换成 ...
- .NET开源工作流RoadFlow-快速入门
在环境搭建好之后,我们就来学习一下怎样快速创建一个流程,并执行和流转该流程(我们这里讲的只是入门,不涉及到具体流程参数设置). 创建一个流程步骤为:在数据库在创建表-->设计表单-->设置 ...
- Mysql允许外网接入
首先你可以为mysql创建一个账户,或者为root用户接入数据库. 授权用户指定所有主机以指定用户连接服务器 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDE ...
- DTW
DTW主要是应用在孤立词识别的算法,用来识别一些特定的指令比较好用,这个算法是基于DP(动态规划)的算法基础上发展而来的.这里介绍语音识别就先介绍下语音识别的框架,首先我们要有一个比对的模版声音,然后 ...
- oracle 查询今天哪个表增加的数据多
一.创建一个表 create table A( TABLE_NAME VARCHAR2(200), COUNT_NUM NUMBER) 二.创建一个存储过程create or replace ...
- [整理]Selector、shape详解
Selector.shape详解(一) Selector的结构描述: <?xml version="1.0" encoding="utf-8"?> ...