一堆请求与gcd

时间:2012-04-10 07:31:23

标签: ios objective-c multithreading grand-central-dispatch nsoperation

所以任务如下: 1)我有一个曲目ID,我需要向服务器询问所有曲目数据 2)解析响应(这里我也有一个相册ID) 3)现在我有一个专辑ID,我需要向服务器询问所有专辑数据 4)解析响应(这里我也有艺术家ID) 5)现在我有一个艺术家ID,我需要向服务器询问所有艺术家数据

我想知道用gcd做这件事的正确方法是什么。在dispatch_async中有3个dispatch_sync -s? 我希望所有这些都是一个操作,在后台运行,所以一开始我想到了NSOperation,但所有回调,解析,保存到核心数据都需要在后台线程上进行,所以我必须创建一个单独的运行循环回调以确保它在我得到响应之前不会被杀死并且不会阻止ui。

所以问题是我应该如何在这里使用gcd,还是最好使用nsoperation和runloop线程进行回调?感谢

1 个答案:

答案 0 :(得分:1)

我建议在主线程上使用NSOperation和回调。

如果您考虑一下,您的工作流程非常顺序:1 - > 3 - > 5;解析步骤(2和4)可能并不昂贵,因此你想在一个单独的线程上执行它们(我猜它们根本不贵,你可以忽略解析时间与等待网络通信的时间相比)。

此外,如果您使用AFNetworking(或甚至NSURLConnection +块)之类的通信框架,您的工作流程将非常容易实现:

  1. 检索曲目数据
  2. 在“检索曲目数据”响应处理程序中,获取专辑ID,然后发送“专辑数据”的新请求;
  3. 在“检索相册数据”响应处理程序中,获取艺术家ID等等......