Swift、Objective-C、Cocoa混合編程設(shè)置指南
Swift 被設(shè)計(jì)用來(lái)無(wú)縫兼容 Cocoa 和 Objective-C 。在 Swift 中,你可以使用 Objective-C 的 API(包括系統(tǒng)框架和你自定義的代碼),你也可以在 Objective-C中 使用 Swift 的 API。這種兼容性使 Swift 變成了一個(gè)簡(jiǎn)單、方便并且強(qiáng)大的工具集成到你的 Cocoa 應(yīng)用開(kāi)發(fā)工作流程中。
這篇指南包括了三個(gè)有關(guān)兼容性的重要方面方便你更好地利用來(lái)開(kāi)發(fā) Cocoa 應(yīng)用:
互用性 使你將 Swift 和 Objective-C 相接合,允許在 Objective-C 中使用 Swift 的 Class 并且當(dāng)你在寫(xiě) Swift 代碼時(shí)利用熟悉的 Cocoa Class、Pattern、Practice。
混合和匹配 允許你創(chuàng)建結(jié)合了 Swift 和 Objective-C 文件的混合語(yǔ)言應(yīng)用,他們能更彼此進(jìn)行通信。
遷移 由于以上兩點(diǎn),從已經(jīng)存在的 Objective-C 代碼遷移到 Swift 是非常簡(jiǎn)單的,使得用最新的 Swift 特性代替你的 Objective-C 應(yīng)用部分內(nèi)容成為了可能。
在你開(kāi)始學(xué)習(xí)這些特性前,你需要對(duì)如何建立 Swift 環(huán)境來(lái)訪問(wèn) Cocoa 系統(tǒng)框架有個(gè)大體了解。
建立你的 Swift 環(huán)境
為了開(kāi)始體驗(yàn)在 Swift 中訪問(wèn) Cocoa 框架,使用 Xcode 的一個(gè)模板來(lái)創(chuàng)建一個(gè)基于 Swift 應(yīng)用。
在 Xcode 中創(chuàng)建一個(gè) Swift 項(xiàng)目
1) 選擇 File > New > Project > (iOS or OS X) > Application > your template of choice。
2) 點(diǎn)擊 Language 彈出菜單并選擇 Swift。
Swift 項(xiàng)目的結(jié)構(gòu)幾乎和 Objective-C 項(xiàng)目一模一樣,只有一個(gè)重要的區(qū)別:Swift 沒(méi)有頭文件。在實(shí)現(xiàn)和接口之間沒(méi)有顯示的劃分,所以一個(gè)特定類中的所有信息都存儲(chǔ)在單獨(dú)的.swift文件中。
現(xiàn)在開(kāi)始,你可以開(kāi)始體驗(yàn)在app delegate中寫(xiě) Swift 代碼,或者你可以通過(guò)選擇 File > New > File > (iOS or OS X) > Other > Swift來(lái)創(chuàng)建一個(gè) Swift 類。
理解 Swift 導(dǎo)入過(guò)程
在你建立 Xcode 項(xiàng)目后,你可以在 Swift 里導(dǎo)入任意用 Objective-C 來(lái)工作的 Cocoa 平臺(tái)框架。
任意 Objective-C 的框架(或 C 類庫(kù))將作為一個(gè)module,能直接導(dǎo)入到 Swift 中。這些包括了所有 Objective-C 系統(tǒng)框架-比如 Foundation、UIKit 和 SpriteKit,就像系統(tǒng)支持公共 C 類庫(kù)。舉個(gè)例子,想導(dǎo)入 Foundation,只要簡(jiǎn)單地添加 import 語(yǔ)句到你寫(xiě)的 Swift 文件的頂部。
SWIFT
import Foundation
這個(gè) import 導(dǎo)入了所有 Foundation 的 API,包括NSDate,NSURL,NSMutableData,并且他們的所有方法、屬性和類別都可以在 Swift 中直接使用。
導(dǎo)入過(guò)程是非常簡(jiǎn)潔的。Objective-C 框架在頭文件中申明 API。在 Swift 中,那些頭文件被編譯成 Objective-C 的 module,接著被導(dǎo)入到 Swift 作為 Swift 的 API。導(dǎo)入決定了 Objective-C 的 Function,Class,Method 和 Type 如何在 Swift 中出現(xiàn)。對(duì)于 Function 和 Method,這個(gè)過(guò)程影響他們的參數(shù)和返回值。導(dǎo)入過(guò)程可以做下面這些事情:
1.重映射確定的 Objective-C 類型到 Swift 中的同等類型,就像 id 到AnyObject
2.重映射確定的 Objective-C 核心類型到 Swift 中的替代類型, 就像NSString到String
3.重映射確定的 Objective-C 概念到 Swift 中相匹配的概念,如pointers到optionals
在互用性章節(jié),你將會(huì)了解到更多關(guān)于這些映射如何在你的 Swift 代碼進(jìn)行取舍。 導(dǎo)入 Swift 的模型到 Objective-C 和從 Objective-C 導(dǎo)入 Swift 是非常相似的。Swift 申明它的 API,比如一個(gè)框架作為 Swift modules。同時(shí)這些 Swift modules 會(huì)生成 Objective-C 的頭文件。這些頭文件可以映射回 Objective-C 的 API 中。一些 Swift 的 API 不映射回 Objective-C 因?yàn)樗麄內(nèi)∩崃苏Z(yǔ)言特性發(fā)現(xiàn)這些在 Objective-C 中不可用。關(guān)于在 Objective-C 中使用 Swift 的更多特性,請(qǐng)參看在同一項(xiàng)目中使用 Swift 和 Objective-C。
相關(guān)文章
Objective-C和Swift的轉(zhuǎn)換速查手冊(cè)(推薦)
這篇文章主要給大家介紹了關(guān)于Objective-C和Swift的轉(zhuǎn)換速查手冊(cè)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),非常推薦給大家參考學(xué)習(xí)使用,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)不2018-06-06Swift開(kāi)發(fā)之UITableView狀態(tài)切換效果
這篇文章主要介紹了Swift開(kāi)發(fā)之UITableView狀態(tài)切換效果的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08Swift使用CollectionView實(shí)現(xiàn)廣告欄滑動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了Swift使用CollectionView實(shí)現(xiàn)廣告欄滑動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06swift版webview加載網(wǎng)頁(yè)進(jìn)度條效果
這篇文章主要為大家詳細(xì)介紹了swift實(shí)現(xiàn)webview加載網(wǎng)頁(yè)進(jìn)度條效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11Swift項(xiàng)目中利用SWRevealViewController實(shí)現(xiàn)側(cè)滑菜單
這篇文章主要介紹了Swift項(xiàng)目中利用SWRevealViewController實(shí)現(xiàn)側(cè)滑菜單,需要的朋友可以參考下2015-12-12