在Cocoa和Objective-C中使用Swift

2018-02-04  本文已影响39人  桔子听

基础设置

Swift在设计之初,就考虑到与Cocoa和Objective-C的无缝兼容。Swift可以调用Objective-C的API,Objective-C也可以调用Swift的API。这个特性,会让Swift成为你工具箱中又一个简单,方便而又强大的工具。

这个指南覆盖Swift和Objective-C兼容的三个重要的方面,对于你开发Cocoa应用将会大有裨益。

在开始学习这些新特性之前,我们先要创建一个可以获取Cocoa系统框架的Swift开发环境。

创建Swift开发环境

要想体验一下用Swift开发Cocoa app,先选一个Xcode模板来创建一个新的Swift工程

用Xcode创建一个Swift工程

1.选择File > New > Project > (iOS, watchOS, tvOS, or macOS) > Application > 你选择的模板。

2.点击语言选择弹出框,选择Swift

Swift和Objective-C工程结构几乎一样,有一点比较重要的区别:Swift没有头文件。所有的类,函数,常量都在一个.swift文件里,实现文件和接口文件之间没有一个明显的划分。关于这点,在Swift和Objective-C混编里有更多细节的讨论。

现在可以开始体验Swift了,在app delegate里直接写Swift代码,或者通过File > New > File > (iOS, watchOS, tvOS, or macOS) > Source > Swift新建一个Swift文件来写Swift代码。

理解Swift中Import的处理过程

Swift工程建好后,就可以引入Cocoa或者CocoaTouch中任意的Framework,在Swift中使用Objective-C的大门即将打开。

只要是支持模块化的Objective-C框架或C的库都可以直接引入到Swift中使用,这就包括所有的Objective-C系统框架,例如,Foundation, UIKit, SpriteKit,还有系统提供的一般性的C库。例如要在一个Swift文件里调用Foundation的API,只要在文件顶部添加import语句就可以了。

import Foundation

有了这条import语句,Swift文件就能获取Foundation框架中,所有的类,协议,方法,属性,常量。

import做的事情比较简单直接。Objective-C会将框架里的API归并到头文件。而在Swift中,这些头文件会编译到一个Objective-C模块里,形成Swift可以调用的API。import语句负责这些Objective-C中定义的函数,类,方法,类型等信息在Swift中会有以怎样的形式出现。对于函数和方法,import会影响他们的参数类型和返回值类型。对于类型,有一下几个影响:

更多在Swift中使用Objective-C的信息,请查看与Objective-C API交互

注意

C++文件不能直接import到Swift中,需要创建一个Objective-C文件或者C文件来包住C++代码

在Objective-C中import Swift文件的方式和Swift中import Objective-C类似。Swift会将API归并到一个Swift模块。然后这些Swift模块会生成Objective-C头文件。这些头文件里的API就可以被调用了。但是有些Swift API并不能转化到Objective-C头文件,因为这些是Swift语言特有的,所以,Objective-C不能生成相应的功能。

更多在Objective-C中使用Swift的信息,请查看Swift和Objective-C混编

上一篇 下一篇

猜你喜欢

热点阅读