如何在一个iOS项目中使用 Objective-C 和 Swift


作者:Thomas Hanning 原文链接

Objective-C 和 Swift 能很好的交互,所以在同一个项目中可以很容易的同时使用两者。

在 Swift 文件中使用 Objective-C 写的代码

  你可以在一个我们称它为 bridging-header 文件里面导入 Objective-C 文件。Xcode 会把这些(Objc 文件)转换成 Swift 可用,后面使用起来就感觉和 Swift 一样了。

  创建 bridging-header 文件很容易,新建 Objective-C 类的时候,如果你的项目里面还没有 bridging-header 文件,Xcode 会提示你来新建(译注:确认之后建立的文件名是:项目名-Bridging-Header.h)。当然你可以选择不创建而自己手动来建立,直接新建 Objective-C 头文件,取名:Bridging-Header.h(译注:你也可以另外取个),然后定位到 “Build Settings” 里面的 “Swift Compiler – Code generation” 设置项,把 “Objective-C Bridging Header” 设置成刚才的文件名。

  添加 Objective-C 文件到 bridging-header 之后,使用之前还需要把项目编译下,就可以使用了。

在 Objective-C 文件中使用 Swift 写的代码

  反过来甚至更简单。Xcode 会自动新建一个文件,你只需要在 Objective-C 文件里面引入这个很重要的文件:<ProductModuleName>-Swift.h

#import "<ProductModuleName>-Swift.h"

  <ProductModuleName> 就是项目的名字(译注:不用加<>)。所有继承自 NSObject 或者是其子类的 Swift 文件都可以在 Objective-C 文件中使用。

还是和上面一样,使用之前你需要先编译你的项目。

为什么要在一个项目里面即使用 Swift 又使用 Objective-C 呢?

  所以还是有个问题:为什么要在一个项目里面即使用 Swift 又使用 Objective-C 呢?是的,如果要开始一个新的项目,Swift 是个很好的选择,但是你还想使用之前已经写好的一些 Objective-C 写的类库,你就可以很容易的使用它们。反过来 Objective-C 项目里面使用 Swift 也很容易。这种方式可以让你一步一步的来学习 Swift。这里有两篇文章是关于这个的讨论:

参考

@Anchiy / shutterstock.com
iBook Store: Using Swift with Cocoa and Objective-C