AFNetworking指定completionQueue可以指定回调的线程.
YTKNetwork写死了主线程回调,实际可以考虑在YTKBaseRequest上加入completionQueue属性,完成在非主线程上回调block或delegte。
之所以有这个需求,是因为在主线程上需要完成一个同步的调用。要完成这个需求,可以在调用请求后,使用一个锁NSCondition或信号量,将主线程挂起等待, 这时候指定回调block是后台线程完成解锁或发送信号,完成主线程得到结果继续执行。而如果只能是主线程回调,这里显然就出现了主线程在等待block执行锁释放,而block在等待主线程执行的局面了。
信号同步挂起等待,可以使用[RACSignal first]方法
网友评论