iOS基于runtime的網(wǎng)絡(luò)請(qǐng)求封裝

前言

近期看了許多關(guān)于runtime的文章,自己花了一段時(shí)間去鉆研這塊東西,下面分享一下如何用runtime封裝網(wǎng)絡(luò)請(qǐng)求。

實(shí)現(xiàn)原理

runtime有一個(gè)方法,就是可以去遍歷一個(gè)類對(duì)象的所有屬性。

MyClass *myClass = [[MyClass alloc] init];//創(chuàng)建了類對(duì)象
    unsigned int outCount = 0;//記錄類對(duì)象屬性的個(gè)數(shù)
    Class cls = [myClass class];//獲取類名
    objc_property_t* properties = class_copyPropertyList(cls, &outCount);//獲取類的所有對(duì)象數(shù)組properties  outCount表示數(shù)組的元素個(gè)數(shù)
    for(int i = 0; i < outCount; i++) {//遍歷properties數(shù)組
        objc_property_t property = properties[i];//類對(duì)象的每個(gè)屬性
        const char* char_property_name =  property_getName(property);//轉(zhuǎn)化成char類型
        if (char_property_name) {//判斷是否獲取成功
            NSString *property_name = [[NSString alloc] initWithCString:char_property_name encoding:NSUTF8StringEncoding];// 轉(zhuǎn)換OC類型的字符串
        }
    }
    free(properties);//釋放指針

由此可以得到一個(gè)啟發(fā):網(wǎng)絡(luò)請(qǐng)求是可以通過(guò)類文件來(lái)管理的。

思路

所有網(wǎng)絡(luò)請(qǐng)求的類文件都繼承一個(gè)基類BaseNetRequest,然后在子類的.h中寫上網(wǎng)絡(luò)請(qǐng)求中需要的請(qǐng)求參數(shù)名,在BaseNetRequest.m文件中,通過(guò)上述runtime的方法獲取網(wǎng)絡(luò)請(qǐng)求參數(shù),并在子類的init方法里做統(tǒng)一處理。

優(yōu)點(diǎn)

1.網(wǎng)絡(luò)請(qǐng)求可以通過(guò)文件的形式統(tǒng)一管理,方便開(kāi)發(fā)者根據(jù)文件結(jié)構(gòu)去尋找對(duì)應(yīng)的請(qǐng)求。
2.需要做統(tǒng)一操作時(shí),可以在BaseNetRequest文件中進(jìn)行處理。

如何使用

項(xiàng)目目錄結(jié)構(gòu)

目錄結(jié)構(gòu)
  • 測(cè)試服務(wù)器地址 http://xxxxxxxxxx
  • 接口名稱 initAction/getBanner
  • 請(qǐng)求參數(shù) position(傳0)t(1-iOS,2-android)

示例代碼

創(chuàng)建對(duì)應(yīng)的請(qǐng)求類TestNetRequest,繼承自BaseNetRequest,在.h中寫上對(duì)應(yīng)的請(qǐng)求參數(shù)。


請(qǐng)求參數(shù)
調(diào)用步驟

調(diào)用結(jié)果

調(diào)用結(jié)果log輸出

demo中有詳細(xì)的注釋和使用方法,地址:NetRequestDemo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容