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



我目前正在构建一个需要连接到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 调用进行特定的回调?选择器或块似乎是执行此操作的一种方法,但我不确定实现此方法的最佳方法。

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

您可以查看使用 NSOperation 的示例。

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

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

最新更新