天天看點

OC和Swift混編使用Pod管理第三方庫的問題 OC和Swift混編Pod引入第三方庫的問題 問題描述:Swift應用OC 的開源架構,需要建立一個橋接頭檔案,問題就出在這個看似簡單,卻隐藏着一個巨大的問題:一切都按部就班的在橋接頭檔案中引入了OC 頭檔案,但是xcode總是報錯找不到該檔案。接下來較長的描述問題和原因。

OC和Swift混編Pod引入第三方庫的問題

問題描述:Swift應用OC 的開源架構,需要建立一個橋接頭檔案,問題就出在這個看似簡單,卻隐藏着一個巨大的問題:一切都按部就班的在橋接頭檔案中引入了OC 頭檔案,但是xcode總是報錯找不到該檔案。接下來較長的描述問題和原因。

1.為了在Swift項目中引入OC 開源架構,我使用了pod工具引入。然後下圖:

OC和Swift混編使用Pod管理第三方庫的問題 OC和Swift混編Pod引入第三方庫的問題 問題描述:Swift應用OC 的開源架構,需要建立一個橋接頭檔案,問題就出在這個看似簡單,卻隐藏着一個巨大的問題:一切都按部就班的在橋接頭檔案中引入了OC 頭檔案,但是xcode總是報錯找不到該檔案。接下來較長的描述問題和原因。

2.之後建立橋接檔案:

OC和Swift混編使用Pod管理第三方庫的問題 OC和Swift混編Pod引入第三方庫的問題 問題描述:Swift應用OC 的開源架構,需要建立一個橋接頭檔案,問題就出在這個看似簡單,卻隐藏着一個巨大的問題:一切都按部就班的在橋接頭檔案中引入了OC 頭檔案,但是xcode總是報錯找不到該檔案。接下來較長的描述問題和原因。

3.然後就是在配置檔案中設定橋接檔案路徑:

OC和Swift混編使用Pod管理第三方庫的問題 OC和Swift混編Pod引入第三方庫的問題 問題描述:Swift應用OC 的開源架構,需要建立一個橋接頭檔案,問題就出在這個看似簡單,卻隐藏着一個巨大的問題:一切都按部就班的在橋接頭檔案中引入了OC 頭檔案,但是xcode總是報錯找不到該檔案。接下來較長的描述問題和原因。

4.到這裡就看似完成了,一切都很簡單。但是,當編譯時問題就來了,如下圖:

OC和Swift混編使用Pod管理第三方庫的問題 OC和Swift混編Pod引入第三方庫的問題 問題描述:Swift應用OC 的開源架構,需要建立一個橋接頭檔案,問題就出在這個看似簡單,卻隐藏着一個巨大的問題:一切都按部就班的在橋接頭檔案中引入了OC 頭檔案,但是xcode總是報錯找不到該檔案。接下來較長的描述問題和原因。

原因是找不到該檔案。可是明明使用了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時關于這句話是否要加上的淺顯原因(其實深入的東西就需要接着百度了)

既然原因找到了,解決它就好辦了,我們隻要把這兩種語言的開源架構分開管理就可以了。。。。