使用Swift与Cocoa和Objective-C交互-(1)基本设置



- 作者: SwiftCafe


基本设置

Swift 用于与 Cocoa 和 Objective-C 的无缝兼容。你可以在 Swift 中使用 Ojbective-C 的 API(从系统框架到你自己创建的代码)。这种兼容性让 Swift 成为集成到你 Cocoa 应用开发工作流中一个简单,方便并且强大的工具。

这个手册涵盖了你在开发 Cocoa 应用时的三个重要的兼容性:

  • 互操作性 让你可以在 Swift 和 Objective-C 中互相提供接口,允许你在 Objective-C 的代码中使用 Swift 的类并且在 Swift 的代码中使用 Cocoa 中的类,模式和实践。
  • 混合和匹配让你能够创建同时包含 Swift 和 Objecitve-C 文件,并且他们之间能够互相调用的项目。
  • 迁移可以通过互操作性,混合和匹配很容易的从已有的 Objective-C 代码迁移到 Swift,可以将你用 Objective-C 写的应用的某些部分使用上 Swift 的新特性。

在你开始学习这些特性之前,你需要对如何设置 Swift 环境来使用 Cocoa 系统框架有一个初步了解。

设置你的 Swift 环境

我们从 Xcode 模版中创建一个基于 Swift 的应用来开始实验在 Swift 中使用 Cocoa 框架。

在 Xcode 中创建 Swift 项目

  1. 选择 File > New > Project > (iOS 或 OS X) > Applications > 你选择的模版。
  2. 点击 Language 弹出菜单并选择 Swift.

img

Swift 项目的结构和 Objective-C 项目几乎一样,只有一个重要区别:Swift 没有头文件。 在实现和接口中没有明确的界限,所以关于一个特定类的所有信息都放在一个 .swift 文件中。

到这里,你可以在你应用的代理类中写 Swift 代码,或者你可以通过 File > New > File > (iOS 或 OS X) > Other > Swift 来创建一个新的 Swift 类。

理解 Swift 的导入过程

设置好 Xcode 项目后,你可以将任何框架从 Cocoa 平台导入进来,开始在 Swift 中使用 Objective-C。

所有作为模块使用的 Objective-C 框架(或 C库)都可以直接被导入 Swift。这包括所有的 Objective-C 系统框架-比如 Foundation,UIKit和SpriteKit-也包括系统提供的C语言公用库。例如,如果要引入 Foundation 库,可以像这样简单的在 Swift 头文件中添加这个 import 语句。
import Foundation
这个导入语句将所有的 Foundation API 直接导入到 Swift 中 - 包括 NSDate,NSURL,NSMutableData,和他们所有的方法,属性和扩展。

这个导入过程很直观。Objective-C 将 API 都放到头文件中。这些头文件在 Swift 中被编译成了 Objective-C 模块。这些在 Swift 被用作 Swift API。这个导入确定了 Objective-C 中定义的函数,类,方法和类型如何在 Swift 中展现。对于函数和方法,这个过程影响了它们的参数类型和返回值类型。对于类型,这个导入过程可以做下面这些事:

  • 将 Objective-C 中的类型重新映射到 Swift 中,比如 id 映射成 AnyObject。
  • 将 Objective-C 中得一些核心类重新映射为 Swift 中得替代类,比如将 NSString 映射到 String。
  • 将 Objective-C 中得概念匹配到 Swift 中,比如指针到optional。

    互操作性* 中,你将会学到更多关于这个映射的内容还有如何将它们引入你的 Swift 代码中。

将 Swift 代码引入到 Objective-C 的方式和把 Objective-C 引入到 Swift 的方式相同。 Swift 提供它的 API—比如通过一个框架—作为 Swift 模块。通过这些 Swift 模块生成 Objective-C 头文件。这些头文件提供了可以映射回 Objective-C 的 API。还有一些 Swift API 是不能够映射到 Objective-C 中的,因为它们使用了 Objective-C 中没有的语言特性。关于在 Objective-C 中使用 Swift 的更多信息,可以查看在同一个项目中使用Swift和Objective-C这章。

注意:
你不能将C++代码直接导入到 Swift。可以为 C++ 代码创建 Objective-C 或者 C 的封装。

如果你觉得这篇文章有帮助,还可以关注微信公众号 swift-cafe,会有更多我的原创内容分享给你~

本站文章均为原创内容,如需转载请注明出处,谢谢。




微信公众平台
更多精彩内容,请关注微信公众号


公众号:swift-cafe
邮件订阅
请输入您的邮箱,我们会把最新的内容推送给您: