無論你在OC項目還是Swift 項目中, 都遵從兩個準則:
>在OC文件里只能寫OC代碼
>在Swift文件里只能寫Swift代碼
雖然不同語言文件, 但卻能互相調(diào)用, 不過需要進行一下橋接, 就是需要通過下面的2個文件
1.(ProjectName-Bridging-Header.h)
Swift文件要調(diào)用OC代碼的時候 你會發(fā)現(xiàn)你無法引用OC.h文件, 所以就要用到這個文件, 對OC文件進行橋接.
有兩個生成橋接文件的方法,
1.1.通過在Swift/OC項目中直接創(chuàng)建OC文件/Swift文件, 首次Xcode會自動幫你創(chuàng)建, 按照提示操作即可.
1.2.自己創(chuàng)建頭文件, 文件名字為任意.h,Building Settings > Swift Compiler-General ,將 Objective-C Bridging Header 設置為此文件的路徑, 一般為/任意.h,把一些OC.h文件在這里引用進去, 然后你就可以在Swift文件里操作OC代碼
如下圖:
總結(jié): 無論你在OC項目中, 還是Swift項目中都有圖3所示,Objective-C Bridging Header顧名思義, 在頭文件導入OC頭文件以供Swift調(diào)用
2.(ProjectName-Swift.h)
無論你在OC項目中, 還是Swift項目,OC調(diào)用Swift代碼需要在OC文件里引用這個文件, 你會發(fā)現(xiàn)你的項目中并沒有這個文件, 因為這個文件是個隱藏文件, 在項目Build的時候自動生成所有Swift文件對應的頭文件聲明, 集中寫在了該文件中, 在OC文件中直接導入該頭文件即可使用
一般的路徑如下
/Users/ns/Library/Developer/Xcode/DerivedData/ProjectName-geqrwwqpiybkuddpogphythauoyo/Build/Intermediates.noindex/ProjectName.build/Debug-iphonesimulator/SwiftApp.build/DerivedSources/ProjectName-Swift.h
注意: 若是項目名字有特殊符號, 比如項目名為mpush-client-ios(OC), Xcode會自動替換”-", “(" 和 “)”為”_”, 文件名稱變?yōu)閙push_client_ios_OC_-Swift.h