iOS开发之Swift调用Objective-C代码

jopen 10年前

最近iOS开发之新编程语言Swift在iOS开发圈内反响比较大,国内外都有很多教程或小示例。
虽然Swift这门语言仍然在不断的进化之中,而且变动还是比较大,苹果公司也不承诺目前所写代码会在将来兼容,但仍挡不住iOS开发者的热情。

为什么要使用Swift调用Objective-C代码

目前Swift语言所编写的应用才刚刚可以使用Xcode 6 GM版本提交,而Objective-C作为苹果的主开发语言存在了很多年了。目前尚无成熟的Swift库可用,所以当前编写应用可以说基本离不开调用Objective-C代码的情况。

如何去调用Objective-C代码

目前苹果给出的解决方案是使用一个Bridging-Header头文件,将所要使用的Objective-C代码的头文件引用进来。其中 Xcode自动生成的头文件名形式会是以项目名-Bridging-Header.h这样的形式。但是,这个文件名格式并不是必须的,你可以自由定义。

Xcode自动生成方案

新建一个Swift项目,是不会自动生成调用Objective-C的头文件的。但是,可以在项目中,新建一个Objective-C的文件,这时候,Xcode会提示你,是否生成一个相应的头文件来使Swift调用。选择,这时候就是自动生成一个上面所说格式的头文件。你可以把新建的空Objective-C文件删除,只保留这个头文件。
把你后续想调用的Objective-C文件或库的头文件填写在这个桥接头文件里即可。

自定义方案

如果你在上一步选择取消了,那么后续新建Objective-C文件也不会再有提示。或者你想自定义一个文件名,而不使用Xcode生成的文件名。

选择新建一个Header文件,文件名随意。例如,可以是Hello.h
之后,在项目—TARGETS这里,找到Swift Compiler - Code Generation这一项,这里有一项,其键是Objective-C Bridging Header,在其值的地方,填入你的头文件信息即可。

1. 可以将相应头文件拖到填值的输入框中
2. 手动填写头文件路径到输入框中,如: Hello/Hello.h
</div> </div> </div>

这样,你就可以使用相应的头文件来引用Object-C的代码了。

来自:http://my.oschina.net/dmdgeeker/blog/318356