zl程序教程

您现在的位置是:首页 >  其它

当前栏目

关于swift与objective-c混合使用

关于 swift 混合 Objective 使用
2023-09-27 14:25:17 时间

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

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



首先看官方说明。 两种语是能够同一时候存在同一个project中。 不论这个project是基于哪一种语言创建的, 都能够增加还有一个语言。使他们同一时候存在同一个project中进行混合编译。



1. 我们加入swift类到现有的objective-cproject中。CMD+N 例如以下所看到的



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



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



4.点击 YES后就创建了两个文件,例如以下图所看到的。我的project名叫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过来。 所以我们要帮助他生成一个能够引用的头文件,点project文件->选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代码到你的project后。你就能够使用标准ocjective-c来操作swift类



至此任务完毕。 匆忙打字编辑,假设有写的不正确的。 欢迎批评指正交流。

QQ:407300101