最近公司要做一個(gè)SDK,由于之前沒有做過(guò),只能度娘了,寫出一個(gè)demo后,然后SDK里面要用到網(wǎng)絡(luò)請(qǐng)求,用原生的網(wǎng)絡(luò)請(qǐng)求,自問沒有能力封裝出一個(gè)AFN出來(lái),只能在SDK里面加入AFN,但是出現(xiàn)兩個(gè)問題:
1:直接將AFN的源碼導(dǎo)入項(xiàng)目中去,在第三方調(diào)用的時(shí)候,會(huì)產(chǎn)生類名重復(fù)的沖突,修改類名那是一個(gè)大工程啊,并且?guī)焐?jí)也是一個(gè)問題;
2:用pod安裝AFN,第三方?jīng)]有用到pod呢?
都2021年了,還有公司的項(xiàng)目沒用到pod,勸你離職吧,后續(xù)開發(fā)會(huì)有很多坑等著你呢.
閑言少敘.直接上工程
打開xcode,File→New→Project
選擇Framework
創(chuàng)建完成后是這樣的界面
在SDK中,vim 一個(gè)podfile,添加AFN后,
再進(jìn)行pod install,然后SDK內(nèi)部,就變成了這樣
此時(shí),要注意啦,一些不必要的選項(xiàng)要去掉了,因?yàn)槲覀儧]有用到macOS的開發(fā),所有macOS的選項(xiàng)要去掉,
并且支持的系統(tǒng)版本也要進(jìn)行更改
公司要求iOS10.0以后都要支持,大家根據(jù)不同的需求,隨意選擇
加下來(lái)要把framework修改為靜態(tài)庫(kù),Build Setting→搜索Mach→將type改為Static Library
下面創(chuàng)建一個(gè)網(wǎng)絡(luò)請(qǐng)求類,并在SDKTest.h文件里面引入這個(gè)類,
并且將Request.h添加到Public里面
基本的準(zhǔn)備工作已經(jīng)完成,現(xiàn)在在Request.h里面寫一個(gè)類方法,在.m文件里面引用AFN并實(shí)現(xiàn)方法,
這里要注意啦,我們平時(shí)引用AFN,基本上都是在.pch文件里面這樣引入#import "AFNetworking.h",但是在這里,千萬(wàn)不要這樣的引入,因?yàn)檫@樣引入,在SDK里面不會(huì)報(bào)錯(cuò),三方在引入我們的SDK時(shí),會(huì)報(bào)錯(cuò),下面的報(bào)錯(cuò)信息(圖12),是不是看著都腦袋疼,所以一定要用#import <AFNetworking/AFNetworking.h>引入
在類方法中寫調(diào)用AFN的代碼
我們只需要進(jìn)行真機(jī)打包,所以在這樣的狀態(tài)下con + B,Products文件下的framework會(huì)由紅色變成黑色,這樣就做出了一個(gè)包含AFN的framework
新建一個(gè)工程,新工程也必須要用pod來(lái)進(jìn)行管理,導(dǎo)入AFN,將我們做好的framework添加到新工程中,并調(diào)用寫好的類方法
這樣一個(gè)含AFN的framework就做好了