0

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

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

request1
   if result1
      request2
         request3
   else if result2
      request4
         request3

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

4

2 回答 2

2

假设您UIViewController是某种“加载”,这没有错。也许更好的处理方法是创建一个NSObject子类,并让它处理您的网络操作,因此ApplicationDidBecomeActive:您可以将其关闭,并且仍然可以确保您的应用程序继续运行。

于 2012-02-06T20:46:27.413 回答
2

AFNetworking 0.9 添加了批处理请求的能力。AFHTTPCLient -enqueueBatchOfHTTPRequestOperationsWithRequests:progressBlock:completionBlock:将一组操作排入队列;当每个操作完成时,它会像往常一样触发自己的操作completionBlock,以及进度块,它告诉您有多少请求已经完成。然后,一旦全部完成,最后的完成块就会执行。

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

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

于 2012-02-07T16:07:54.150 回答