IOS block dispatch_queue

研究了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 allocinitWithURL:url] autorelease]; get

        [request setPostValue:uid forKey:UnloginView_id];   

        [request start];

       NSMutableArray *content =[[request responseStringJSONValue];

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

這樣就完整了來了一次請求和接受數據。

哇 哦。

相關文章
相關標籤/搜索