use_frameworks!和#use_frameworks!的區別、解決Swift項目中use_frameworks!衝突的問題

use_frameworks!和#use_frameworks!的區別 轉自:https://www.jianshu.com/p/0ae58a477459css

一、 用cocoapods 導入swift 框架到swift項目和OC項目都必需要 use_frameworks!
二、用動態庫,必需要在Podfile文件中添加 use_frameworks!swift

靜態庫:在編譯時會將庫copy一份到目標程序中,編譯完成以後,目標程序不依賴外部的庫,也能夠運行。 缺點: 會使應用程序變大 動態庫:(.dylib)編譯時只存儲了指向動態庫的引用。能夠多個程序指向這個庫,在運行時才加載,不會使應用體積變大,可是運行時加載會損耗部分性能,而且依賴外部的環境,若是庫不存在或者版本不正確則沒法運行 Framework:其實是一種打包方式,將庫的二進制文件,頭文件和有關的資源文件打包到一塊兒,方便管理和分發。 

(1)若是在Podfile文件裏不使用 use_frameworks! 則是會生成相應的 .a文件(靜態連接庫),經過 static libraries 這個方式來管理pod的代碼。bash

(2)Linked:libPods-xxx.a包含了其它用pod導入的第三方框架的.a文件。框架

(3)若是使用了use_frameworks! 則cocoapods 會生成相應的 .frameworks文件(動態連接庫:實際內容爲 Header + 動態連接庫 + 資源文件),使用 dynamic frameworks 來取代 static libraries 方式。性能

(4)Linked:Pods_xxx.framework包含了其它用pod導入的第三方框架的.framework文件。spa

use_frameworks! -> dynamic frameworks 方式 -> .framework.net

use_frameworks! -> static libraries 方式 -> .a

(1)swift項目cocoapods 默認 use_frameworks!
(2)OC項目cocoapods 默認 #use_frameworks! 

一、用cocoapods導入OC框架到swift項目

(1)#use_frameworks! 必須建立頭文件,在頭文件裏面 #import "xxx.h"
(2)use_frameworks! 若是有頭文件,在頭文件裏面 #import "xxx/xxx.h",其它swift文件中用到不須要再import;若是沒有頭文件,則在每一個須要用到的swift文件裏 import xxx。code

二、用cocoapods導入swift框架到swift項目

(1)必須use_frameworks!
(2)不須要頭文件,在須要用到框架的swift文件裏 import xxxblog

三、用cocoapods導入OC框架到OC項目

(1)#use_frameworks! 在須要用到的文件裏 #import "xxx.h";也能夠經過pch文件,用法相似swift中的頭文件。
(2)use_frameworks! 與(1)相似,用法上沒有區別。資源

總結:

1)用swift項目考慮到會使用 OC 和 swift 兩種第三方框架,因此Podfile中使用swift項目默認的 use_frameworks! 更爲穩當,而且frameworks動態連接庫具備必定的優點。 (2)能夠創建一個Bridge頭文件,用來import那些OC框架的.h文件:#import "xxx/xxx.h"。或者不建頭文件,像swift框架同樣,直接在須要用到的swift文件中import xxx。解決Swift項目中use_frameworks!衝突的問題,詳見:https://blog.csdn.net/feng2qing/article/details/73835805
相關文章
相關標籤/搜索