2012-03-09 111 views
0

我目前正在构建需要连接到API的iPhone应用程序。我构建了一个API类,用于发出异步Web请求并使用委托获取响应(在主UI线程上)。它看起来是这样的:需要帮助为iOS/iPhone应用程序设计API包装

Api* api = [[Api alloc] init] 
api.delegate = self; 
[api request:@"foo/bar"]; // makes async API call via NSURLConnection 

-(void) apiRespondedWith(id) response 
{ 
    // do stuff with API response. 
} 

这工作好,但我想提出一个视图控制器几个API请求,想更简单的方法调用来区分。有没有办法针对每个API调用进行特定的回调?选择器或块看起来像是一种方式来做到这一点,但我不确定实现这一点的最佳方式。

回答

1

有几种方法可以做到这一点。例如,您可以在NSOperation/NSOperationQueue中执行Web请求。请注意,如果您使用此方法,NSURLConnection将需要在NSOperation内同步执行 - 因为NSOperation已在异步执行。每个网页下载请求都封装在一个NSOperation中,然后将其提交到一个NSOperationQueue

您可以检查使用NSOperationexample

您可以通过提供NSOperation完成块来扩展上述示例。

或者,您可以考虑使用第三方库,如AFNetworking,它使用这种基于块的回调机制。