我正在研究我正在消耗大量网络服务的应用程序,我需要同时执行多个异步请求的特定任务,并且在执行此操作时我有点困惑,因为我想要执行此任务以最佳方式,因为Web服务在执行时需要时间。任务是同时执行多个异步请求,并使用回调将响应返回给Main。所以我想知道我应该用什么来完成这样的任务,比如GCD,NSOperation或AFNetworking?
我应该如何为这样的任务制作结构。
请帮帮我。
答案 0 :(得分:3)
我个人会使用NSOperation
来解决这个问题。它并没有花费太多时间来实现,如果这真的是你将要做的唯一网络AFNetworking
可能是矫枉过正。
话虽如此,如果您对NSOperation
或NSURLConnection
感到不舒服,那么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 reference到AFNetworking
是有帮助的。
答案 1 :(得分:0)
看看NSURLConnection和NSURLSession。
NSURLConnection同时具有同步和异步方法。如果你只是需要"让我知道它什么时候完成"键入async,有一个方便的新类方法 + sendAsynchronousRequest:队列:completionHandler:
您传递NSURLRequest,并在完成后执行一段代码。非常容易使用。
NSURLSession是iOS 7中的新功能,可让您创建操作组并对其进行管理,有点像下载管理器。我已经读到了它,但还没有机会使用它。
还有第三方库AFNetworking,它使用上述功能提供易于使用的包装,以及其他服务。
在任何情况下,您都不需要使用GCG或NSOperation。 NSURLConnection和NSURLSession类为您管理异步服务,并且比自己动手更有效。