需要帮助设计iOS / iPhone应用程序的API包装器

时间:2012-03-09 17:01:15

标签: objective-c ios cocoa-touch cocoa ios5

我目前正在构建一个需要连接到API的iPhone应用程序。我构建了一个API类,它生成异步Web请求并使用委托来获取响应(在主UI线程上)。它看起来像这样:

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.
}

这很好用,但我想在ViewController中发出几个API请求,并希望更容易区分这些调用。有没有办法为每个API调用进行特定的回调?选择器或块似乎是一种方法,但我不确定实现它的最佳方法。

1 个答案:

答案 0 :(得分:1)

有几种方法可以实现这一目标。例如,您可以在NSOperation / NSOperationQueue中执行网络请求。请注意,如果使用此方法,NSURLConnection将需要在NSOperation内同步执行 - 因为NSOperation已经异步执行。每个网络下载请求都封装在NSOperation中,而NSOperationQueue又会提交给NSOperation

您可以使用NSOperation查看example

您可以通过提供{{1}}完成块来扩展上面的示例。

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