章節(jié)導(dǎo)航:
Swift開發(fā)指南:使用Swift與Cocoa和Objective-C(Swift 4) - 1.入門
Swift開發(fā)指南:使用Swift與Cocoa和Objective-C(Swift 4) - 2.互通性
基本設(shè)置
Swift旨在提供與Cocoa和Objective-C的無縫兼容性刁赦。您可以在Swift中使用Objective-C API拴念,您可以在Objective-C中使用Swift API。這使Swift成為一個簡單预吆、方便和強大的工具雁竞,可以集成到開發(fā)工作流程中。
本指南介紹了Swift和Objective-C兼容性的三個重要方面,您可以在開發(fā)Cocoa應(yīng)用程序時將其利用它:
- 互操作性讓您可以在Swift和Objective-C代碼之間進(jìn)行交互涣狗,允許您在Objective-C中使用Swift類,并在編寫Swift代碼時利用熟悉的Cocoa類舒憾、模式和實踐镀钓。
- 混編和匹配允許您創(chuàng)建包含可以彼此通信的Swift和Objective-C文件的混合語言應(yīng)用程序。
- 從現(xiàn)有的Objective-C代碼遷移到Swift可以輕松實現(xiàn)互操作性和混合搭配镀迂,從而可以使用最新的Swift功能來替換Objective-C應(yīng)用的部分丁溅。
在開始了解這些功能之前,您需要基本了解如何設(shè)置可以訪問Cocoa系統(tǒng)框架的Swift環(huán)境探遵。
建立你的Swift環(huán)境
要使用Swift開始嘗試使用Cocoa應(yīng)用程序開發(fā)窟赏,請從提供的Xcode模板之一創(chuàng)建一個新的Swift項目妓柜。
在Xcode中創(chuàng)建Swift項目
- 選擇文件>新建>項目>(iOS,watchOS涯穷,tvOS 或 macOS)>應(yīng)用程序> 您選擇的模板棍掐。
-
單擊語言彈出菜單并選擇Swift。
建立Swift項目
Swift項目的結(jié)構(gòu)與Objective-C項目幾乎完全相同拷况,有一個重要的區(qū)別:Swift沒有頭文件作煌。在實現(xiàn)和接口之間沒有明確的描述 —— 所有關(guān)于類、函數(shù)或常量的信息都駐留在單個.swif
t文件中赚瘦。這在同一項目中的Swift與Objective-C章節(jié)中有更詳細(xì)的討論粟誓。
從這里,您可以通過在應(yīng)用程序委托中編寫Swift代碼或通過選擇文件>新建>文件>(iOS蚤告,watchOS努酸,tvOS 或 macOS)> Source> Swift 創(chuàng)建的新Swift文件來開始體驗。
了解Swift導(dǎo)入流程
您的Xcode項目設(shè)置完成后杜恰,您可以從Cocoa或Cocoa Touch導(dǎo)入任何框架获诈,開始通過Swift使用Objective-C。
任何支持模塊
的 Objective-C框架或C語言庫都可以直接導(dǎo)入到Swift中心褐。這包括所有Objective-C系統(tǒng)框架舔涎,例如Foundation,UIKit和SpriteKit以及系統(tǒng)附帶的常用C語言庫逗爹。例如亡嫌,要在Swift文件中使用Foundation API,請將以下import語句添加到文件的頂部:
import Foundation
使用此導(dǎo)入語句掘而,Swift文件現(xiàn)在可以訪問Foundation的所有類挟冠,協(xié)議,方法袍睡,屬性和常量知染。
導(dǎo)入過程很簡單。Objective-C框架在頭文件中暴露API斑胜。在Swift中控淡,這些頭文件被編譯為Objective-C模塊,然后將其導(dǎo)入Swift作為Swift API止潘。導(dǎo)入過程確定在Swift中顯示的Objective-C代碼中聲明的函數(shù)掺炭、類、方法和類型凭戴。對于函數(shù)和方法涧狮,此過程會影響其參數(shù)和返回值的類型。對于類型,導(dǎo)入過程可能會產(chǎn)生以下影響:
- 重新映射某些Objective-C的類型為它們在Swift的同等類型勋篓,如
id
為Any
- 重新映射某些Objective-C的核心類型為它們在Swift的替代類型吧享,如
NSString
為String
- 將某些Objective-C概念重新映射為Swift中對應(yīng)的概念,如指向可選項的指針
有關(guān)在Swift中使用Objective-C的更多信息譬嚣,請參閱與Objective-C API進(jìn)行交互(章節(jié)2)钢颂。
注意
您不能將C ++代碼直接導(dǎo)入Swift。而應(yīng)該為C++代碼創(chuàng)建一個Objective-C或C包裝器拜银。
將Swift導(dǎo)入Objective-C的模型類似于將Objective-C導(dǎo)入Swift的模型殊鞭。Swift將其暴露的API(例如一個框架)生成Swift模塊。除了生成這些Swift模塊之外尼桶,還生成了Objective-C頭文件操灿。這些標(biāo)頭提供可以映射回Objective-C的API。一些Swift API不會映射回Objective-C泵督,因為它們利用Objective-C中不可用的功能趾盐。
有關(guān)在Objective-C中使用Swift的更多信息,請參閱同一項目中的Swift和Objective-C小腊。
文章翻譯自Apple Developer Page : Using Swift with Cocoa and Objective-C (Swift 4)
方便大家學(xué)習(xí)之用救鲤,如果翻譯存在錯誤,歡迎指正秩冈。