swift objective-及c语言 混编
在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类
参考 http://www.jianshu.com/p/5b5238b2dbb9
http://www.cnblogs.com/mylizh/p/3971544.html
http://www.2cto.com/kf/201604/501934.html
http://blog.csdn.net/zlj_jeck/article/details/51503937 详解swift和OC以及C语言的混编(不看后悔!)
http://www.jianshu.com/p/084f2ca45007
swift objective-及c语言 混编的更多相关文章
- python和C语言混编的几种方式
Python这些年风头一直很盛,占据了很多领域的位置,Web.大数据.人工智能.运维均有它的身影,甚至图形界面做的也很顺,乃至full-stack这个词语刚出来的时候,似乎就是为了描述它. Pytho ...
- iOS开发——技术精华Swift篇&Swift 2.0和Objective-C2.0混编之第三方框架的使用
swift 语言是苹果公司在2014年的WWDC大会上发布的全新的编程语言.Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题.Swift语言采用安全编程模式,且引 ...
- swift实现与OC的混编
swift与OC的混编 现在写swift,很多的类库还不是很全,很多的第三方还是只有OC版的,这个时候swift想用,通常都是采用的swift和OC混编的方式.这里给大家演示一下混编是如何做的. sw ...
- swift语言混编--语言交互的接口
FFI stands for Foreign Function Interface. A foreign function interface is the popular name for the ...
- Swift和Objective-C混编注意
前言 Swift已推出数年,与Objective-C相比Swift的语言机制及使用简易程度上更接地气,大大降低了iOS入门门槛.当然这对新入行的童鞋们来讲,的确算是福音,但对于整个iOS编程从业者来讲 ...
- Swift和Objective-C混编的注意啦
文/仁伯安(授权) 原文链接:http://www.jianshu.com/p/2ed48b954612 前言 Swift已推出数年,与Objective-C相比Swift的语言机制及使用简易程度上更 ...
- Swift与C++混编 OpenCV初体验 图片打码~
OpenCV初体验,给图片打码 提到OpenCV,相信大多数人都听说过,应用领域非常广泛,使用C++开发,天生具有跨平台的优势,我们学习一次,就可以在各个平台使用,这个还是很具有诱惑力的.本文主要记录 ...
- Swift语言学习之OC和Swift混编
本文转自http://www.helloswift.com.cn/swiftbase/2015/0112/3469.html iOS OC和Swift混编 1.创建一个swift或者oc的工程:我这里 ...
- 初探swift语言的学习—Object-C与Swift混编
swift 语言出来后,可能新的项目直接使用swift来开发,但可能在过程中会遇到一些情况,某些已用OC写好的类或封装好的模块,不想再在swift 中再写一次,哪就使用混编.这个在IOS8中是允许的. ...
随机推荐
- LeetCode----66. Plus One(Java)
package plusOne66; /* Given a non-negative number represented as an array of digits, plus one to the ...
- [转]tomcat中的session管理
转载地址:http://blog.csdn.net/iloveqing/article/details/1544958 当一个sesson开始时,Servlet容器会创建一个HttpSession对象 ...
- noi 9265 取数游戏
题目链接:http://noi.openjudge.cn/ch0206/9265/ 题意:从自然数1到N中不取相邻2数地取走任意个数,问方案数. 解法:f[i][1]表示在前i个数中选了第i个的方案数 ...
- 2016年12月26日 星期一 --出埃及记 Exodus 21:21
2016年12月26日 星期一 --出埃及记 Exodus 21:21 but he is not to be punished if the slave gets up after a day or ...
- 微软 WP 新策略:非开发者账号免费解锁 1 部手机(转)
好消息,微软现在非开发者用户解锁1部WP8手机和部署两个应用,即我们只 需注册个windows live账号即可解锁我们的WP8了!! 准备工作:1.需要一台装有windows8 64位系统的电脑. ...
- php实战正则表达式:验证手机号
摘自http://www.tuicool.com/articles/MFNZRzu 本文通过逐步完善一个验证手机号的正则表达式来介绍了正则表达式中的 字符组 .量词 . 字符串起始/结束位置 . 分组 ...
- 在mysql数据库原有字段后增加新内容
update table set user=concat(user,$user) where xx=xxx; [注释]这个语法要求原来的字段值不能为null(可以为空字符''):
- python model对象转为dict数据
在接口通讯里经常遇到这种需求,需要将对象的字段名和值均传至接口,user = User.objects.get(id=1)笨方法1,没错,我这样写过:di = {}di['username'] = u ...
- UVa 11300 Spreading the Wealth(有钱同使)
p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: "Times New ...
- Android 签名工具 shell脚本
signApk.sh #!/bin/bash #$1 signed and unaligned apk #$2 unsigned apk #$3 aligned apk #./signApk.sh t ...