您的位置:首页 > 产品设计 > UI/UE

IOS block dispatch_queue

2013-10-21 19:43 411 查看
研究了3天的block使用,今天终于写出了自己的第一个block接口请求,完整的接口调用和定义,

首先在interface中用dispatch——queue来处理请求,然后通过block进行回调,

再在调用的时候处理block回调回来的数据就行了,非常的简洁,代码量减少很多,且效率极高,嘿嘿。

第一步定义要回调的block

typedef void (^getCommentList)(id data,BOOL succeed);
data就是回调时传过去的服务器数据,succeed表示是否成功,当然也可以定义其它参数了

第二步用dispatch来创建队列请求数据

dispatch_queue_t queue = dispatch_queue_create("GetCommentList", NULL);

dispatch_async(queue, ^(){

NSURL *url=[NSURL URLWithString:URL_GetComments];

ASIFormDataRequest *request=[[[ASIFormDataRequest alloc] initWithURL:url] autorelease];

[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回到主线程。

这样就完整了来了一次请求和接受数据。

哇 哦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: