我开始同步我的ASIHTTPrequest在这样一个单独的线程:能在ASIHTTPRequest/AFNetworking后台线程上执行一个completionBlock吗?
//inside this start method I create my ASIHTTPRequest and start it
dispatch_async(dispatch_get_global_queue(0, 0), ^{
[process start];
});
但completionBlock仍然打响了主线程上。 是否可以将completionBlock的执行保存在与请求开始时相同的线程中?
我可以想出解决这个问题的唯一方法是定义一个调度队列,并在同一个线程中手动执行completionBlock,从而持有对创建队列的引用。但是这并没有直接解决它,因为在将其余代码重定向到创建的分派队列之前,您会在主线程中传递一个令人担忧的时刻。
有人有更好的解决方案吗?
编辑:同样也是AFNetworking完成块真的......
你介意发表一个这样的例子吗?我正在为同样的事情苦苦挣扎,但我没有足够的精通Obj-C来理解如何在没有示例的情况下实现您的解决方案。谢谢! – Julian 2012-04-18 21:53:41
刚刚更新了一个例子的答案,希望这有助于!另外请确保在不再需要时释放requestQueue,因此最好创建一个实例变量并使用dispatch_release(requestQueue)释放它; – Yannick 2012-04-20 06:38:16
似乎AFHTTPRequestOperation不再具有这些属性...认为它现在是“completionQueue” – shim 2015-10-20 22:16:59