平時我們說的庫(library)
是對庫(library)
和框架(framework)
的通稱资溃。我們說swift
庫拗窃,指的是swift動態(tài)框架(Swift dynamic framework)
,因為swift
不允許使用靜態(tài)庫(static library)
。
那么庫(library)
和框架(framework)
有什么區(qū)別呢站楚?iOS8
之后引入動態(tài)框架(dynamic framework)
蝠引,動態(tài)框架(dynamic framework)
可以包含代碼,圖片和其他資源抱怔。在iOS8
之前劣坊,只能使用靜態(tài)庫(static library)
。靜態(tài)庫(static library)
會包含多種指令集代碼屈留,例如i386
讼稚,armv7
等,所以也稱作胖靜態(tài)庫(fat static library)
绕沈。靜態(tài)庫(static library)
不能包含其他資源锐想,只能是代碼。
還有一點不同是乍狐,動態(tài)框架(dynamic framework)
有命名空間(namespace)
赠摇,所以,如果在同一個工程里引入兩個動態(tài)框架(dynamic framework)
,有相同名字的類藕帜,也不會沖突烫罩,但是靜態(tài)庫(static library)
就會沖突。
swift5
之前洽故,iOS
系統(tǒng)并沒有包含swift運行時庫(Swift runtime libraries)
贝攒,也就是說,每個swift靜態(tài)庫(static library)
都需要把這個運行時庫(runtime libraries)
包含進去时甚,但是如果有多個靜態(tài)庫(static library)
隘弊,那么就會導(dǎo)致包含進去的運行時庫(Swift runtime libraries)
沖突。所以荒适,蘋果只能用swift動態(tài)框架(dynamic framework)
梨熙。
在使用cocoapod
管理依賴時,在podfile
里刀诬,使用use_frameworks!
表示編譯生成動態(tài)框架(dynamic framework)
咽扇。所以,如果是swift
工程陕壹,那就必須使用use_frameworks!
质欲,上文說了,swift必須使用動態(tài)框架(dynamic framework)
糠馆。
參考:https://www.raywenderlich.com/626-cocoapods-tutorial-for-swift-getting-started