码迷,mamicode.com
首页 > 其他好文 > 详细

关于swift与objective-c混合使用

时间:2014-06-14 07:46:34      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:des   style   class   blog   code   http   

在xocde6出来我们大部分代码都是用objective-c写的(部分C/C++),现在出生来了一个新的语言叫swift,那么如何既能使用我们之前的代码,还可以使用新语言呢, 本文就此做一下说明。

关于swift语方的学习可以看文档 The Swift Programming Language 本文假设你已经有所了解,下面基于当前您当前在做的objective-c来做swift扩展, 假设我们想要用swift在原来的工程中做一个新的view界面, 这个view会用到原有的objective-c中的类,最终将这个新的view 再加到我们现有工程中。


bubuko.com,布布扣

首先看官方说明, 两种语是可以同时存在同一个工程中, 不论这个工程是基于哪一种语言创建的, 都可以加入另一个语言,使他们同时存在同一个工程中进行混合编译。



1. 我们添加swift类到现有的objective-c工程中。CMD+N 如下所示

bubuko.com,布布扣


2.点Next后 输入sfLoginView 语言选择swift

bubuko.com,布布扣


3.点Next后 会弹出堤示,是否创建桥接文件,只有第一次创建时才会出现, 创建第二个类时如果之前已经创建就不会有提示了, 该文件被用来在swift中使用objective-c的类时,引入头文件。

bubuko.com,布布扣


4.点击 YES后就创建了两个文件,如下图所示,我的工程名叫SePass,生成的桥接文件叫SePass-Bridging-Header.h

bubuko.com,布布扣


5.打开sfLoginView.swift文件,创建一个我们的swift类,当然你也可以使用playground文件来编辑后再copy到swift文件中。

bubuko.com,布布扣


6. 现在假设我们需要在swift中使用一个objective-c的一个类,叫GTMBase64, 此时我们只要打开刚才生成的桥接文件SePass-Bridging-Header.h 在里面引用我们想要的头文件。

bubuko.com,布布扣


7. 引用头文件后,就可以直接用该类了。

        var imageData:NSData =GTMBase64.decodeString(g_DataImageKey)


8. 现在我们用swift编写的类sfLoginView已经完成了,接下来我们要在现有的objective-c中引用我们的swift编写的类了, 因为swift类自己没有头文件,我们无法直接import过来, 所以我们要帮助他生成一个可以引用的头文件,点工程文件->选targets -> BuildingSettings -> Product Module Name 我们输入whatwhatwhat 

bubuko.com,布布扣


9. 此时XCode会生成一个头文件,whatwhatwhat-swift.h 我们只在要需要使用sfLoginView的oc.m文件中引用这个头文件后,就可以使用sfLoginView类了

    #import "whatwhatwhat-swift.h"


bubuko.com,布布扣


10. 我们再来看下人whatwhatwhat-swift.h中是什么内容

看来是系统帮助我们生成了, 对应swift类的objective-c的类实现方式

bubuko.com,布布扣



11.下面是官方说明, 一旦你导入swift代码到你的工程后,你就可以使用标准ocjective-c来操作swift类

bubuko.com,布布扣


至此任务完成, 匆忙打字编辑,如果有写的不对的, 欢迎批评指正交流。

QQ:407300101



关于swift与objective-c混合使用,布布扣,bubuko.com

关于swift与objective-c混合使用

标签:des   style   class   blog   code   http   

原文地址:http://blog.csdn.net/xuanwenchao/article/details/30226823

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!