0

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

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

所以问题是我应该如何在这里使用 gcd,或者最好使用 nsoperation 和用于回调的 runloop 线程?谢谢

4

1 回答 1

1

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

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

此外,如果您使用像AFNetworking(甚至NSURLConnection+ 块)这样的通信框架,您的工作流程将很容易实现:

  1. 检索轨迹数据
  2. 在“检索曲目数据”响应处理程序中,获取专辑 ID,然后发送新的“专辑数据”请求;
  3. 在“检索专辑数据”响应处理程序中,获取艺术家 ID,等等...
于 2012-04-10T08:17:27.153 回答