OC和Swift混編Pod引入第三方庫的問題
問題描述:Swift應用OC 的開源架構,需要建立一個橋接頭檔案,問題就出在這個看似簡單,卻隐藏着一個巨大的問題:一切都按部就班的在橋接頭檔案中引入了OC 頭檔案,但是xcode總是報錯找不到該檔案。接下來較長的描述問題和原因。
1.為了在Swift項目中引入OC 開源架構,我使用了pod工具引入。然後下圖:
2.之後建立橋接檔案:
3.然後就是在配置檔案中設定橋接檔案路徑:
4.到這裡就看似完成了,一切都很簡單。但是,當編譯時問題就來了,如下圖:
原因是找不到該檔案。可是明明使用了pod工具引入了啊。(注:百度清一色的都是以上步驟,該問題并未在百度查詢到問題原因和解決方案。所謂部落格恐怕都是出自一人)
5.在作了大量的測試和摸索後,終于得意解決。問題的根本原因就是我之前用pod引入了Swift開源架構,為了友善,在引入OC開源架構時我同樣是使用了pod工具。我們回看第一步
Swift架構:
pod 'SnapKit', '~> 0.30.0.beta1'
pod 'Alamofire', '~> 3.4.0'
pod 'SwiftyJSON', '~> 2.3.2'
OC架構:
pod 'SVProgressHUD'
pod 'MJRefresh'
同樣還有一句話:
use_frameworks!
沒錯,簡單的說,在OC開發時并不用使用該語句,但是Swift開發時使用pod工具就需要加上這句話。這就導緻了OC 和 Swift公用同一個項目工程中的pod時造成了以上顯示的錯誤,即使其他步驟都沒有錯,但是錯誤原因就是找不到檔案。
至于為什麼會這樣,我聯想到了之前看到過的一篇文章好像是有這麼一句話(記不太清楚了)OC是動态語言,而Swift是靜态語言,這就是為什麼兩者在使用pod時關于這句話是否要加上的淺顯原因(其實深入的東西就需要接着百度了)
既然原因找到了,解決它就好辦了,我們隻要把這兩種語言的開源架構分開管理就可以了。。。。