这个问题是关于将 RestKit 请求包装在自定义对象中,以及我是否可以保证在返回响应时,发送 RestKit 请求的对象也将用作委托。
我正在使用一个深奥的 REST API (Salesforce),而 RestKit 似乎不能很好地处理 Salesforce 的一些特性——例如,当您调用 Salesforce REST API 时,您可能会返回部分数据集,然后得到一个“nextRecordsUrl”,你必须遵循它才能获得下一个块。其他使用 Salesforce 和 REST 的人也遇到了同样的问题(参考https://groups.google.com/forum/#!msg/restkit/HJNjB7I6WVM/8u5n7nHoJQUJ)。我创建了一个类来包装对 Salesforce 的调用并自动跟踪这些链接,并正确处理返回的数据集。类实例将自己注册为 REST 调用的委托。
我编写的类本身就很好用(当只有一个实例时),但我将创建其他类并有几个实例需要独立处理它们的数据。我已经通读了文档和代码(这是一次学习经历,我现在只使用 ios 大约一个月了),但我看不出它是否可以保证特定实例会作为其代理响应单独请求,或者它可能会意外获取另一个实例的响应。
例如,假设我有实例 A 和 B,它们都使用 RKObjectLoader 发出请求,并使用loader.delegate = self;
. 两者同时运行(异步)。这是我看到的潜在流程:
- A 的 RKObjectLoader 进行调用,将自己注册为代理以进行响应
- RestKit 框架向 A 发送请求
- B 的 RKObjectLoader 进行调用,将自己注册为代理以进行响应
- RestKit 框架发送对 B 的请求
- ... 等待 ...
- RestKit 框架得到响应,并以某种方式确定此响应来自 B 的请求,调用 B 作为委托
- B 委托方法被调用
- RestKit 框架得到响应,并以某种方式确定此响应来自 A 的请求,调用 A 作为委托
- 委托方法被调用
我看不出 RestKit 框架如何区分响应和请求,从而确保调用正确的委托实例。换句话说,在我看来,RestKit 可能会得到对请求的响应,然后调用它想要的任何委托……但这似乎违反直觉,而且框架作者似乎非常敏锐。
所以,我的问题:
- 如果我有一个使用 RKObjectLoader 的类实例并将自己设置为委托,我能否保证在该请求的响应到来时调用它?
- 您能否指出处理此问题的 RestKit 框架中的实际实现,以便我了解它是如何完成的?
非常感谢!