应用程序激活时的iOS网络操作

时间:2012-02-06 20:31:02

标签: objective-c ios asihttprequest afnetworking

在我目前的iOS应用程序中,当应用程序变为活动状态时,我需要执行多个网络操作(我宁愿一次性获取所有内容,而不是在用户单击专用选项卡时查询内容)。我正在使用一个UIViewController,当应用程序进入前台并处理其中的所有网络内容时应该显示它。
这是推荐的方式吗?

我需要发出的请求类似于:

request1
   if result1
      request2
         request3
   else if result2
      request4
         request3

为了避免使用意大利面条代码,是否有一个可以使用lib来启用链接请求,例如那些?我正在使用ASIHttpRequest,我没有找到任何好的方法来执行它(即使有队列)。

2 个答案:

答案 0 :(得分:2)

假设您的UIViewController是某种“加载”,那没有错。 也许更好的方法是创建一个NSObject子类,并处理你的网络操作,所以在ApplicationDidBecomeActive:你可以解雇它,并且仍然可以继续你的应用。

答案 1 :(得分:2)

AFNetworking 0.9增加了批量请求的功能。 AFHTTPCLient -enqueueBatchOfHTTPRequestOperationsWithRequests:progressBlock:completionBlock:将一系列操作排入队列;当每个操作完成时,它会像正常一样激活它自己的completionBlock,以及进度块,它会告诉你有多少请求已经完成。然后,一旦完成所有操作,最后的完成块就会执行。

所以在你的情况下,它可以简单:

[someClient enqueueBatchOfHTTPRequestOperationsWithRequests:[NSArray arrayWithObjects:request1, request2, request3, request4, nil] progressBlock:nil completionBlock:(controller logic here)];