在我目前的iOS应用程序中,当应用程序变为活动状态时,我需要执行多个网络操作(我宁愿一次性获取所有内容,而不是在用户单击专用选项卡时查询内容)。我正在使用一个UIViewController,当应用程序进入前台并处理其中的所有网络内容时应该显示它。
这是推荐的方式吗?
我需要发出的请求类似于:
request1
if result1
request2
request3
else if result2
request4
request3
为了避免使用意大利面条代码,是否有一个可以使用lib来启用链接请求,例如那些?我正在使用ASIHttpRequest,我没有找到任何好的方法来执行它(即使有队列)。
答案 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)];