iOS 控制項封裝為framework來使用

2021-09-11 15:23:25 字數 2134 閱讀 3286

通過將自己的控制項封裝成framework靜態庫來使用,可以在不暴露**的所有實現細節的前提下和他人分享控制項.另外通過自己封裝的過程也可以對日常使用他人的庫有更多的了解, 或者在實現模組化的時候可以把固定的業務模組化成靜態庫.

在ios中,靜態庫有兩種:.a:乙個純二進位制檔案,需要有.**件配合使用.framework:包含二進位制檔案和.**件,還有資源檔案

在xcode中,我們可以在已有控制項專案中通過新增新的targets來建立靜態庫,第乙個是建立.framework,第二個是建立.a

這裡我們需要把mach-o type改為static library,因為製作的是乙個靜態庫

把build settings -> architectures -> build active architecture only -> release 選擇no,yes表示只編譯選中模擬器裝置對應的架構,no則為編譯所有模擬器裝置支援的cup架構(debug版本同理,提供給他人是使用時,建議debug也選中no)

建立後會生成乙個專案,這裡的.h要放我們專案中需要暴露給他人呼叫的標頭檔案,主要需要使用《包名/頭檔名.h>,因為在實際使用framework的時候是需要從保重搜尋標頭檔案的.

在.h中import後,還需要在build phases - headers中把對應的標頭檔案放到public

我們在測試新增的檔案中寫乙個log方法

選擇模擬器進行編譯,然後在products中找到framework右擊檢視show in finder其中debug-ophonesimulator中的包就是在debug模式下模擬器可以執行的.framework包,對應的還有relese模式的模擬器包和真機包,我們要做的就是講relese下的模擬器和真機進行合併,因為我們通常使用的framework包都是乙個.

合併兩種型別的framework

這裡有兩種方法,一種是通過指令碼操作,另一種是通過lipo命令列操作,這裡介紹第二種

lipo源於mac系統要製作相容powerpc平台和intel平台的程式.是乙個在macosx中處理通用程式的工具.常用方法有下面3種:

lipo -info libname.a(或者libname.framework/libname)

複製**

lipo -create 靜態庫存放路徑1  靜態庫存放路徑2 ...  -output 整合後存放的路徑

複製**

對framework只需要合併.a檔案就可以

lipo 靜態庫原始檔路徑 -thin cpu架構名稱 -output 拆分後檔案存放路徑

複製**

將合併後的.a檔案替換原本包中的.a,至此,乙個簡單的framework包就完成了

當framework中需要依賴一些資源等,可以做乙個bundle存放資源,然後在copy bundle resources中新增依賴

新建乙個bundle的targets

設定新增到bundle

新增依賴

這樣就可以在framework中引用這些資源

在實際應用中,我們的framework包往往會依賴一些第三方的庫,比如常見的afnetworking,sdwebimage等,這些庫往往主工程是包含的,如果在framework中再新增,就會引起類重複的衝突.一般有兩種處理方法

這種方法對於小一些或者說類少一些的庫來說比較合適

我們可以在新增庫的時候只引用,然後在framework中引用對應的標頭檔案,這樣可以保證build succeeded編譯成功,而且framework中不會打包進去對應的類檔案. 但是已經有了依賴,就需要在主工程中新增對應的庫,這裡要注意的是,如果作為sdk給第三方使用,要確定framework中依賴庫的版本,因為有些庫版本改變可能引起對應檔案的不同.比如afnetworking的2.x版本和3.x版本之間

不要勾選add to terget

自己寫了乙個關於alertview控制項的demo,放到了github上,位址點這裡

List封裝為Page物件

最近在專案中,經常碰到這樣的情況,就是說前台需要page物件,但是我後台page查詢出來的資料 entity類 並不是前台需要的資料 dto 還需要二次封裝,前台要page物件啊,習慣了用工具類,咋自己封裝乙個page物件哦?所有就有了這篇文章,實際上思路都是一樣的,就是我返回的資料肯定是個page...

原始檔封裝為IP的步驟

因為模組的交接,最好將寫好的原始檔和生成的ip封裝乙個ip,然後再轉交給其他的同事使用,這是一種好的習慣。但是對於,封裝的過程還是需要注意一下。實際的看看步驟吧。1 將原始檔和使用到的ip生成工程.2 在tools create and package ip 開啟入下圖 3 注意選項,和生成的檔案的...

bga封裝扇出 扇出型封裝為何這麼火?

詳解扇出型封裝技術 2017年依然炙手可熱的扇出型封裝行業 新年伊始,兩起先進封裝行業的併購已經 維易科 veeco 簽訂了8.15億美元收購優特 ultratech 的協議,安靠 amkor technology 將收購nanium 未公開交易價值 ultratech是扇出型封裝光刻裝置的市場領導...