先吐槽一下,Swift 好多坑,不過反而更期待了。
1、Swift語言使用cocoapods配置Podfile文件時要加上use_frameworks!這句代碼,作用是把三方庫打包成靜態庫
2、swift調用oc的三方庫
a、要建立一個橋接文件,然后在target——>build setting中搜索 (這里不多介紹,小白請谷歌)
之后在橋接文件里面導入第三方OC的頭文件 eg:
如果此刻運行 或許會報錯找不到該第三方的頭文件
之后要設置一個User Header Search Paths,否則在需要用三方庫的地方是調不出來的。在target——>Build Setting里找到search Paths,雙擊User Header Search Paths后面的空白處,設置目錄路徑為${SRCROOT} ,后邊選擇recursive。下圖是我的,加不加“/Pods” 都可以
之后是我遇到的坑
在 TARGETS 選擇Build Phases ,找到 Link With Library
導入 第一個,(是我的第三方)
但是并不是所有的第三方都需要在這里添加,說到這我們要說一下 在 Podfile 里面的添加的 use_frameworks!
用cocoapods 導入swift 框架 到 swift項目和OC項目都必須要 use_frameworks!
(1)如果在Podfile文件里不使用 use_frameworks! 則是會生成相應的 .a文件(靜態鏈接庫),通過 static libraries 這個方式來管理pod的代碼。
(2)如果使用了use_frameworks! 則cocoapods 會生成相應的 .frameworks文件(動態鏈接庫:實際內容為 Header + 動態鏈接庫 + 資源文件)(3)Linked:Pods_xxx.framework包含了其它用pod導入的第三方框架的.framework文件。
如果 第三方有頭文件,是以 .h .m 的形式出現在 Pods 目錄下的 那么 在橋接頭文件里面 #import " xxxxx/xxxxx.h ",其它swift文件中用到不需要再import;并且需要在Link With Library 里面添加 第三方名.framework 文件
如果只有頭文件.h ,該第三方直接是以 .framework 文件 的形式出現在 Pods 目錄下的 那么 則在每個需要用到的swift文件里 import 就可以了。