同时执行多个异步请求

时间:2014-10-14 18:33:43

标签: ios objective-c nsoperation

我正在研究我正在消耗大量网络服务的应用程序,我需要同时执行多个异步请求的特定任务,并且在执行此操作时我有点困惑,因为我想要执行此任务以最佳方式,因为Web服务在执行时需要时间。任务是同时执行多个异步请求,并使用回调将响应返回给Main。所以我想知道我应该用什么来完成这样的任务,比如GCD,NSOperation或AFNetworking?

我应该如何为这样的任务制作结构。

请帮帮我。

2 个答案:

答案 0 :(得分:3)

我个人会使用NSOperation来解决这个问题。它并没有花费太多时间来实现,如果这真的是你将要做的唯一网络AFNetworking可能是矫枉过正。

话虽如此,如果您对NSOperationNSURLConnection感到不舒服,那么AFNetworking可能就是您要走的路。

在我看来:

NSOperation =超轻量级,并执行你的任务到" T"。

AFNetworking =您需要的还有其他100件您不需要的东西。


每条评论:

执行3请求而没有依赖关系的示例可以使用NSOperation这样做(伪):

NSOperationQueue *myQueue....create NSOperationQueue

FetchProfilePictureOperation *fetchPictureOperation.....Sublcass of NSOperation
fetchPictureOperation.completionBlock = ^{
    dispatch_async(dispatch_get_main_queue(),^{
        NSLog("fetchPictureOperation Completed");
    });
};

FetchProfileIconOperation *fetchIconOperation....Subclass of NSOperation
fetchIconOperation.completionBlock = ^{
    dispatch_async(dispatch_get_main_queue(),^{
        NSLog("fetchIconOperation Completed");
    });
};


FetchProfileDetailsOperation *fetchDetailsOperation....Subclass of NSOperation
fetchDetailsOperation.completionBlock = ^{
    dispatch_async(dispatch_get_main_queue(),^{
        NSLog("fetchDetailsOperation Completed");
    });
};


[myQueue addOperation: fetchPictureOperation];
[myQueue addOperation: fetchIconOperation];
[myQueue addOperation: fetchDetailsOperation];
从编写NSOperation的人那里得到的Here is a referenceAFNetworking是有帮助的。

答案 1 :(得分:0)

看看NSURLConnection和NSURLSession。

NSURLConnection同时具有同步和异步方法。如果你只是需要"让我知道它什么时候完成"键入async,有一个方便的新类方法 + sendAsynchronousRequest:队列:completionHandler:

您传递NSURLRequest,并在完成后执行一段代码。非常容易使用。

NSURLSession是iOS 7中的新功能,可让您创建操作组并对其进行管理,有点像下载管理器。我已经读到了它,但还没有机会使用它。

还有第三方库AFNetworking,它使用上述功能提供易于使用的包装,以及其他服务。

在任何情况下,您都不需要使用GCG或NSOperation。 NSURLConnection和NSURLSession类为您管理异步服务,并且比自己动手更有效。