实现同步的AFNetworking

通过信号量的方式,阻塞线程。达到同步AFNetworking的目的。

        dispatch_semaphore_t sema = dispatch_semaphore_create(0);//创建一个为1信号量的信号
        dispatch_queue_t queue = dispatch_queue_create("com.ERH", DISPATCH_QUEUE_CONCURRENT);
        dispatch_async(queue, ^{
            [self.commonViewModel countryList:^(NSArray *arrCountry) {
                long x  = dispatch_semaphore_signal(sema);
                NSLog(@"--%ld",x);
            } queue:queue];
        });
        long x =  dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
        NSLog(@"--%ld",x);

需要注意的是,AFNetorking默认的返回是在主线程中执行,因为主线程被阻塞,所以需要设置AFNetworking的返回在子线程中执行。返回后修改信号量。

你可能感兴趣的:(实现同步的AFNetworking)