最新消息:iOS编程开发交流群(6906921) ,Mac.Cocoa开发交流群(7758675) 欢迎iOS/macOS开发编程爱好及学习者加入!

iOS开发之NSURLSession与AFNetworking 2.x/3.x实现同步请求

iOS 天狐 11770浏览 1评论

AFNetworking 2.x 同步请求

使用waitUntilFinished阻塞当前线程,直到该NSOperation结束

AFNetworking 3.x 同步请求

使用GCD信号量实现AFNetworking常用数据请求POST,GET等等的同步

使用GCD信号量 更改dataTaskWithRequest方法为同步

NSURLSession 同步请求

GCD信号量

信号量是一个整形值并且具有一个初始计数值,并且支持两个操作:信号通知和等待。当一个信号量被信号通知,其计数会被增加。当一个线程在一个信号量上等待时,线程会被阻塞(如果有必要的话),直至计数器大于零,然后线程会减少这个计数。

在GCD中有三个函数是semaphore的操作,分别是:

  • dispatch_semaphore_create   创建一个semaphore, 有一个整形的参数,我们可以理解为信号的总量
  • dispatch_semaphore_signal   发送一个信号,会让信号总量加1
  • dispatch_semaphore_wait    等待信号,当信号总量少于0的时候就会一直等待,否则就可以正常的执行,并让信号总量-1

根据这样的原理,我们便可以快速的将异步请求转换为同步任务:

GCD异步请求使用信号量

 

转载请注明:天狐博客 » iOS开发之NSURLSession与AFNetworking 2.x/3.x实现同步请求

微信 OR 支付宝 扫描二维码
为天狐 打赏
非常感谢你的支持,哥会继续努力!
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1)

  1. dispatch_semaphore_wait一直在等待,AFHTTPSessionManager 请求完成,主队列回调肯定不会走啊
    爆seed8年前 (2017-06-30)回复