即使你尽量用Swift编写iOS程序,难免会遇到部分算法是用C++语言编写的。那你只能去问问”度娘“或“狗哥”怎么用Swift调用C++算法。
一,C,C++, Objective-C,Swift有什么关系,还有什么是混编-.-?
1.当然是兄弟关系,虽然Objective-C是扩充C的面向对象编程语言,C++是在C语言的基础上开发的一种通用编程语言。Swift是由苹果公司推出有意让其与Objective-C共存于苹果公司操作系统上。但是Objective-C一直是由苹果公司来抚养,C,C++也因为苹果公司才变得如此流行。
2.混编,就是混合编译-.-强大吧,好好感受史蒂夫 乔布斯对开发技术人员的尊重和期待。
3.C,C++, Objective ,Swift 但就像《葫芦娃》里面七个兄弟中的四个一样牛掰,七葫芦娃是最厉害的,但需要七个兄弟齐心协力才能收妖。类似的,Swift是最小的弟弟,这就意味着Swift是最厉害的。我们在接近新宠Swift的同时,也要经常复习其他语言,不要忘记他的哥哥们。
二,小小的比较
1.Swift和Objective-C
我们都体会得到Swift调用Objective-C并不难,也不麻烦。你只要在swift的工程里创建OC的文件,系统就会提问帮你生成一个bridging-header,只要在这个bridging-header里import所有要用到的OC的头文件,就可以在swift文件里用swift的语言风格来调用OC类了。
2.Swift和C++
C++并不是像Objective-C这样。首先,我们应该想到Objective-C与C++是可以混编得perfect,而且可以使用STL,办法就是将OC的.m文件后缀改成.mm,然后在OC类中写一个wraper,然后在里面调用C++的类,封装成几个公共的方法就可以了。这时再用swift来调用wraper里的方法,就可以执行C++语句了。
三,iOS OC和Swift混编
1.创建一个swift或者oc的工程:我这里是创建的Swift语言的工程,工程名SwiftTest
2.在工程中代码目录下创建一个oc的类,选择oc语言, 会出一个对话框,选择YES
3.这时会在工程里看到下图这样一个头文件.
4.在这个头文件里添加你的OC文件的.h文件,就可以在任意swift文件中自行调用所包含的oc文件了。
5.接下来在工程的target-》build Setting->package下个性如下两项
6.然后在OC代码的.m文件中引入 + “-swift.h” 这样一个头文件,比如我的工程会生成 SwiftTest-swift.h这样一个头文件的。 然后你的.m文件就可以随便调用swift文件了。
其实如果你设置的Defines Module = YES了, xcode就会默认生成Product Module Name - swift.h这样一个头文件,这个头文件下会有你所有.swift文件的.h信息。
四,总结
1.Swift语言是苹果公司的利器。如果想靠iOS开发来养家人和女朋友,就得好好研究Swift,最好是去苹果官方网站学习,那里有Swift的下载资源和Swift博客,但苹果官方网站里的文档都是英文,所以英语得过关,这并不代表一定要过四六级,只要看得懂技术文档就行,毕竟六级不是人能看得懂的-.-
2.看十篇技术文档,不如解决一个问题,不如自己写一个Demo。所以程序员只能苦逼的奉献自己的青春,多写代码—>.->
3.单身狗要早点找女朋友:)