Manager封裝乙個網路請求

2021-10-24 18:17:53 字數 2140 閱讀 6674

意圖保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點

主要解決乙個全域性使用的類頻繁地建立與銷毀

何時使用當您想控制例項數目,節省系統資源的時候

優點在記憶體裡只有乙個例項,減少了記憶體的開銷,尤其是頻繁的建立和銷毀例項

static dbdmanager *manager = nil;

@implementation dbdmanager

+(instancetype)sharedleton );

}return manager;}+

(id) allocwithzone:

(struct _nszone *

)zone

-(id) copywithzone:

(struct _nszone *

)zone

dispatch_ once _t: 使用 dispatch_once 方法能保證某段**在程式執行過程中只被執行 1 次,並且即使在多執行緒的環境下,dispatch _once也可以保證執行緒安全。 用在這裡就是只建立一次manger,不會建立不同的manger

建立乙個全域性的manager類,使用例項manager進行網路請求,再使用block傳遞請求到的資料,在model裡完成資料解析

我怕不能完美的使用block,所以我們直接看組長的豆瓣demo

//manager類的.**件中

typedef

void

(^allmoviehandle)

(dbdmoviemodel *allmoviemodel)

;//返回值型別(^塊變數名)(形參型別);

//塊變數名當然是自己起的名字 (起乙個讓別人知道這個block是幹什麼的那種名字

//形參型別:網路請求到的資料用在哪乙個model裡,後面名字怎麼起懂的都懂

typedef

void

(^errorhandle)

(nserror *error)

;//nserror是系統錯誤資訊類

//manager類的.m檔案中

//其中乙個網路請求的方法-(

void

)networkwithnumber:

(nsinteger)number succeed:

(allmoviehandle)successblock error:

(errorhandle)errorblock

//形參是網路請求成功或者失敗的block

if

(error == nil)

else

[datatask resume]

;

值得注意的是,在error == nil中已經完成了dbdmoviemodel的初始化

我搜了使用這個方法的地方,貼一下主要**

[

[dbdmanager sharedleton] networkwithnumber:

1 succeed:

^(dbdmoviemodel *allmoviemodel));

} error:

^(nserror *error)

];

網路請求非常耗時,不能等請求到了資料再進行下面的工作,所以要使用非同步請求

同步:非同步:

dispatch_sync //同步請求
呼叫 dispatch_sync的執行緒會等dispatch_sync的內容執行完再繼續執行。

dispatch_async //非同步請求
呼叫 dispatch_async的執行緒不會的等dispatch_async的內容,自己繼續執行。

dispatch_async中加入dispatch_get_main_queue中,是非同步執行中把主佇列中的執行任務放到主線程中去執行,即完成ui介面的更新,而網路請求已經在子執行緒中完成。

網路請求 簡單的封裝乙個請求

我們可以新建乙個 server 資料夾 裡面建立乙個server.js 檔案,來集中處理我們專案中用到的請求 var server function url,type,params method type get success function res fail function res get請...

封裝乙個JSONP請求

首先,先介紹下jsonp的跨域原理 1 動態建立script標籤 2 利用 script 的src屬性,會自動傳送請求 3 只需要將要請求的位址設定為 script標籤的src屬性的值 4 需要服務端的介面配合,必須返回 jsonp 格式的資料才行 注意 1 需要有個支援 jsonp 請求的介面位址...

Axios請求封裝乙個公共的請求頭

assets commom js 下新建乙個js檔案 eg requestparams.js function buildrequestparam conparam con conparam return param 重要的事情說三遍,一定要匯出,一定要匯出,一定要匯出 export default...