天天看點

在項目裡交叉使用Swift和OC

Swift and Objective-C in the Same Project

在項目裡交叉使用Swift和OC

Swift與OC的相容性使得你可以在項目裡使用Swift+OC的方式編寫應用程式,稱為混合+比對(mix and match),用這種方式可以一邊使用享受新語言的快速特性,一邊無縫的接合你已有的OC代碼(原文聽起來好NB的樣子,其實也就那麼回事),不管項目最初是用OC編寫的還是建立的Swift項目,都可以在這個項目裡用OC和Swift混合繼續開發

在項目裡交叉使用Swift和OC

Importing Objective-C into Swift

在Swfit代碼中添加OC檔案的時候,需要依賴一個bridging header檔案,Xcode會在你建立一個OC檔案的時候自動幫你建立(項目是使用Swift語言建立的),點選yes,Xocde就會在建立OC檔案的同時幫我們建立一個 xxx-Bridging-Header.h 檔案,xxx是你的項目名稱(Product Module),然後我們得編輯這個檔案才能讓Swfit代碼調用OC代碼

在項目裡交叉使用Swift和OC

在項目的xxx-Bridging-Header.h檔案裡,添加需要在Swift裡調用的OC檔案,然後就可以在Swfit代碼中調用了

OBJECTIVE-C

#import "XYZCustomCell.h"
#import "XYZCustomView.h"
#import "XYZCustomViewController.h"
           

SWIFT

let myCell = XYZCustomCell()
myCell.subtitle = "A custom cell"
           

在項目的 Build Settings 選項裡,要確定Swift Compiler選項裡有這個Bridging Header檔案的設定,路徑必須指向檔案本身,而不是目錄。

在項目裡交叉使用Swift和OC

Importing Swift into Objective-C

當在OC裡調用Swift中的代碼時,需要依賴一個xcode自動生成的頭檔案,這個自動生成的頭檔案定義了項目中所有的Swift檔案,這個頭檔案的命名為 “xxx-Swift.h” ,xxx為項目的名稱,此外就不需要再做任何事情了,你隻需要在OC代碼裡導入這麼一個檔案,就可以跟沒事一樣拿任意一個Swift中的代碼用了

#import “ProductModuleName-Swift.h”
           

以上歸納為一個表

調用Swift代碼 調用OC代碼
Swift代碼 無需聲明 #import "ProductModuleName-Swift.h”
OC代碼 依賴bridging header檔案 #import "Header.h”