Swift and Objective-C in the Same Project
在項目里交叉使用Swift和OC
Swift與OC的兼容性使得你可以在項目里使用Swift+OC的方式編寫應用程序,稱為混合+匹配(mix and match),用這種方式可以一邊使用享受新語言的快速特性,一邊無縫的接合你已有的OC代碼(原文聽起來好NB的樣子,其實也就那么回事),不管項目最初是用OC編寫的還是新建的Swift項目,都可以在這個項目里用OC和Swift混合繼續開發
Importing Objective-C into Swift
在Swfit代碼中添加OC文件的時候,需要依賴一個bridging header文件,Xcode會在你新建一個OC文件的時候自動幫你創建(項目是使用Swift語言創建的),點擊yes,Xocde就會在新建OC文件的同時幫我們新建一個 xxx-Bridging-Header.h 文件,xxx是你的項目名稱(Product Module),然后我們得編輯這個文件才能讓Swfit代碼調用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文件的設置,路徑必須指向文件本身,而不是目錄。
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” |
我寫了一個小demo,里面有混合調用https://github.com/yang7/swiftAndOc
這里還有另外一個人寫的swift調用OC第三方框架的demo
http://pan.baidu.com/s/1c0myIbA