iOS学习笔记 -- 多个网络请求的处理

在开发中,经常可以看见有这样的需求,就是一个方法要等另外一个方法执行完毕再做相对应的处理,比如说一些网络请求,需要根据上一个请求的返回值做相对应的处理再执行第二个请求,所以我们不能让两个请求同时去请求网络。下面通过GCD和NSOperationQueue来处理这个问题。
GCD方法:
//创建信号量
     __block dispatch_semaphore_t test = dispatch_semaphore_create(0);

//创建队列
        dispatch_queue_t queue = dispatch_queue_create("testBlock", NULL);

        dispatch_async(queue, ^{

            for (int i = 0; i< 4; i++)
            {
                NSLog(@"i的值是:%d",i);

                tempStr = [NSString stringWithFormat:@"%d",i];
            }
  //发送通知

            dispatch_semaphore_signal(test);


        });

  //信号量等待
        dispatch_semaphore_wait(test, DISPATCH_TIME_FOREVER);

        if([tempStr isEqualToString:@"5"])
        {
            for (int j = 0; j<5; j++)
            {

                NSLog(@"j的值是:%d",j);


            }
        }
NSOperationQueue 方法
 //创建一个队列
        NSOperationQueue * queueeTest = [[NSOperationQueue alloc]init];

 //设置最线程数

queueeTest.maxConcurrentOperationCount = 4;

 //创建一个a操作
        NSBlockOperation * optionA = [NSBlockOperation blockOperationWithBlock:^{

            for (int i = 0; i<10000; i++)
            {
                NSLog(@"i的值是:%d",i);
            }
        }];

 //创建一个b操作
        NSBlockOperation * optionB = [NSBlockOperation blockOperationWithBlock:^{

            for (int j = 0; j<20000; j++)
            {
                NSLog(@"j的值是:%d",j);
            }
        }];

 //B操作依赖于a操作
        [optionB  addDependency:optionA];
 //分别加入队列

        [queueeTest addOperation:optionA];

        [queueeTest addOperation:optionB];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值