`
sunqichao
  • 浏览: 27424 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

IOS block dispatch_queue

    博客分类:
  • IOS
阅读更多

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

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

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

哇 哦。

分享到:
评论

相关推荐

    dispatch_barrier_(a)sync

    1、通过dispatch_barrier_(a)sync添加的block会等待前边所有的block执行完(不包括回调)才执行。 2、在其后添加的block会在dispatch_barrier_(a)sync添加的block执行完之后(不包括回调)再执行; 不同点: 1、...

    iOS获取短信验证码倒计时的两种实现方法

    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue); dispatch_source_...

    iOS应用程序中通过dispatch队列控制线程执行的方法

    1. dispatch_queue_t queue = dispatch_queue_create(“com.dispatch.serial”, DISPATCH_QUEUE_SERIAL); //生成一个串行队列,队列中的block按照先进先出(FIFO)的顺序去执行,实际上为单线程

    Async.OC:Objective-C中的语法糖,用于Grand Central Dispatch中的异步调度

    异步OC 用Objective-C重写... 代替熟悉的GCD语法: dispatch_async (dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0 ), ^{ NSLog ( @" A: This is run on the background " ); dispatch_async ( dis

    iOS获取验证码倒计时效果

    本文实例为大家分享了iOS倒计时... dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0,

    iOS发送验证码倒计时应用

    具体代码实现如下: - (IBAction)sendMes:(UIButton *)sender... dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_source_t _timer = dispatch_source_create

    IOS-QuickDevelopMacros:iOS宏指令集合

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ VDStrongifySelf; // 局部对self重新赋值,简化block引用self [self test]; });

    iOS 验证码按钮倒计时功能

    倒计时结束后、可以重新获取! 代码实现如下: // _CountdownTime 倒计时总时间; //_timer 定时器 - (void)startTime:(UIButton ... dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY

    IOS开发-多线程队列测试代码

    // 1.1 dispatch_queue_t 是一个队列,一个FIFO的消费队列 // 1.2 消费者:队列配置的运行线程 // 1.3 被消费对象: 添加到队列中的运行任务(block等) // 1.4 运行任务:将任务放到队列中,等待消费者消费 // 2)同步...

    相册多个图片选择

    dispatch_async(dispatch_get_main_queue(), ^{ [self.assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) { if(group){ [_groups addObject:group];...

    IOS Swift3 四种单例模式详解及实例

    Swift3 单例模式 常见的有这么几种方法 第一种简单到爆的 ...public extension DispatchQueue { private static var onceToken = [String]() public class func once(_ token: String, _ block: () -> Vo

Global site tag (gtag.js) - Google Analytics