Xcode中StaticLibrary和Framework的共同点和区别
生活随笔
收集整理的這篇文章主要介紹了
Xcode中StaticLibrary和Framework的共同点和区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、共同點:兩者其實都是靜態庫。
二、區別
1.承載的內容范疇:
(1)StaticLibrary的產出物只是一個.a文件,為二進制執行文件。分享給別人的時候,頭文件、靜態資源文件需要另外提供。
(2)Framework為一站式分享方案,其實是一個文件夾,其中包含代碼簽名、頭文件、二進制執行文件、靜態資源文件等。
2.頭文件搜索路徑的區別:StaticLibrary需要設置頭文件搜索路徑,Framework不需要。
3.當存在對外部代碼庫依賴的時候
(1)StaticLibrary:能夠只引用外部庫的頭文件,調用外部庫的公開方法,而不引入其庫實現,實現與引用庫的分離部署。
(2)Framework:要引用一個外部庫,就必須要將此外部庫的實現放入Framework內編譯才可以。如果要想達到StaticLibrary的效果,可以使用運行時方式調用。
4.運行環境(對3的理解升級)
(1)StaticLibrary:共享其運行環境,假如其運行環境中包換庫中同一個類,會發生代碼沖突,必須剝離其中一方的此類,然后共享此類。
(2)Framework:與其運行環境隔離,假如其運行環境中包換庫中同一個類,不會發生沖突,同名的兩個類會在各自的環境中獨立運行,互不干擾,哪怕是單例類。
5.綜合3和4,現總結在多方合作開發的時候,負責庫實現的人員,如何選擇使用Framework還是StaticLibrary
(1)假如不想在同一個App中包含多份三方庫(減小包大小),可以使用StaticLibrary,庫本身和App共享第三方庫。但是產出物的結構可能會比較亂。
(2)假如不想考慮和App的代碼沖突問題,庫本身獨立使用需要的庫,想提供比較好的庫結構,可以使用Framework。但是假如庫本身和App都使用了同一個三方庫,會存在兩份三方庫,會增加包大小。
二、區別
1.承載的內容范疇:
(1)StaticLibrary的產出物只是一個.a文件,為二進制執行文件。分享給別人的時候,頭文件、靜態資源文件需要另外提供。
(2)Framework為一站式分享方案,其實是一個文件夾,其中包含代碼簽名、頭文件、二進制執行文件、靜態資源文件等。
2.頭文件搜索路徑的區別:StaticLibrary需要設置頭文件搜索路徑,Framework不需要。
3.當存在對外部代碼庫依賴的時候
(1)StaticLibrary:能夠只引用外部庫的頭文件,調用外部庫的公開方法,而不引入其庫實現,實現與引用庫的分離部署。
(2)Framework:要引用一個外部庫,就必須要將此外部庫的實現放入Framework內編譯才可以。如果要想達到StaticLibrary的效果,可以使用運行時方式調用。
4.運行環境(對3的理解升級)
(1)StaticLibrary:共享其運行環境,假如其運行環境中包換庫中同一個類,會發生代碼沖突,必須剝離其中一方的此類,然后共享此類。
(2)Framework:與其運行環境隔離,假如其運行環境中包換庫中同一個類,不會發生沖突,同名的兩個類會在各自的環境中獨立運行,互不干擾,哪怕是單例類。
5.綜合3和4,現總結在多方合作開發的時候,負責庫實現的人員,如何選擇使用Framework還是StaticLibrary
(1)假如不想在同一個App中包含多份三方庫(減小包大小),可以使用StaticLibrary,庫本身和App共享第三方庫。但是產出物的結構可能會比較亂。
(2)假如不想考慮和App的代碼沖突問題,庫本身獨立使用需要的庫,想提供比較好的庫結構,可以使用Framework。但是假如庫本身和App都使用了同一個三方庫,會存在兩份三方庫,會增加包大小。
總結
以上是生活随笔為你收集整理的Xcode中StaticLibrary和Framework的共同点和区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大数据相关整理
- 下一篇: java复制一个对象_Java中对象的复