研究了3天的block使用,今天終於寫出了本身的第一個block接口請求,完整的接口調用和定義, 服務器
首先在interface中用dispatch——queue來處理請求,而後經過block進行回調, async
再在調用的時候處理block回調回來的數據就好了,很是的簡潔,代碼量減小不少,且效率極高,嘿嘿。 ui
第一步定義要回調的block url
typedef void (^getCommentList)(id data,BOOL succeed); spa
data就是回調時傳過去的服務器數據,succeed表示是否成功,固然也能夠定義其它參數了第二步用dispatch來建立隊列請求數據 線程
dispatch_queue_t queue = dispatch_queue_create("GetCommentList", NULL); orm
dispatch_async(queue, ^(){ 接口
NSURL *url=[NSURL URLWithString:URL_GetComments]; 隊列
ASIFormDataRequest *request=[[[ASIFormDataRequest alloc] initWithURL:url] autorelease]; get
[request setPostValue:uid forKey:UnloginView_id];
[request start];
NSMutableArray *content =[[request responseString] JSONValue];
block(content,YES);
});
dispatch_release(queue);
content就是請求回來的數據,通過解析後用block();回調。第三步在須要建立請求的類裏面實現這個方法
[MP_InterfaceShare getCommentList:str_mid block:^(id data, BOOL succeed) {
self.arr_objects = (NSMutableArray *)data;
dispatch_async(dispatch_get_main_queue(), ^(){
[self initWithControl];
[self stopTheHoldFire];
});
}];
這裏的data就是剛纔的content,若是須要處理UI更新的話就使用dispatch_get_main_queue回到主線程。這樣就完整了來了一次請求和接受數據。
哇 哦。