一、什么是庫裹唆?
共享代碼便是庫誓斥,實現(xiàn)代碼的復用,一般分為靜態(tài)庫和動態(tài)庫许帐。
二劳坑、靜態(tài)庫和動態(tài)庫的區(qū)別?
靜態(tài)庫:鏈接時完整的拷貝到可執(zhí)行文件成畦,多次使用多次拷貝距芬,造成冗余,使包變的更大羡鸥。
動態(tài)庫:鏈接時不復制蔑穴,程序運行時由系統(tǒng)加在到內存中,供系統(tǒng)調用惧浴,系統(tǒng)加在一次存和,多次使用,共用節(jié)省內存。
三捐腿、iOS的靜態(tài)庫纵朋?
.a和.framework 樣式
四、iOS的動態(tài)庫茄袖?
.dylib和.framework
五操软、為什么framework既是靜態(tài)又是動態(tài)?
系統(tǒng)的framework是動態(tài)的宪祥,我們自己創(chuàng)建的是靜態(tài)的聂薪。
六、.a 和 .framework 的區(qū)別是什么蝗羊?
.a 是單純的二進制文件藏澳,.framework是二進制問價+資源文件。
其中.a 不能直接使用耀找,需要 .h文件配合翔悠,而.framework則可以直接使用。
.framework = .a + .h + sorrceFile(資源文件)
七野芒、為什么使用靜態(tài)庫蓄愁?
共享代碼,方便使用狞悲。
實現(xiàn)代碼的模塊化撮抓,固定的業(yè)務模塊話,減少開發(fā)的重復勞動摇锋。
和別人分享代碼胀滚,但又不想讓別人知道代碼的具體實現(xiàn)。
八乱投、實現(xiàn)靜態(tài)庫的注意事項:
1? 咽笼、注意理解:無論是.a靜態(tài)庫還.framework靜態(tài)庫,我們需要的都是二進制文件+.h+資源文件戚炫,不同的是剑刑,.a本身只是二進制文件,需要配上.h和資源文件才能使用双肤,而.framework本身已經(jīng)包含了二進制文件施掏、.h和資源文件,可以直接使用茅糜。
2? 七芭、圖片資源的處理:兩種靜態(tài)庫,一般都是把圖片文件單獨的放在一個.bundle文件中蔑赘,一般.bundle的名字和.a或.framework的名字相同狸驳。新建一個文件夾预明,把它改名為.bundle,右鍵->顯示包內容,之后就可以向其中添加資源文件耙箍。
3 撰糠、把category打成靜態(tài)庫,但是在使用靜態(tài)庫的工程中辩昆,調用category中的方法時會有找不到該方法的運行時錯誤(selector not recognized)阅酪,解決辦法是:在使用靜態(tài)庫的工程中配置other linker flags的值為-ObjC。
4 如果一個靜態(tài)庫很復雜汁针,需要暴露的.h比較多的話术辐,就可以在靜態(tài)庫的內部創(chuàng)建一個.h文件(一般這個.h文件的名字和靜態(tài)庫的名字相同),然后把所有需要暴露出來的.h文件都集中放在這個.h文件中施无,而那些原本需要暴露的.h都不需要再暴露了术吗,只需要把.h暴露出來就可以了。