この質問は、RestKitリクエストをカスタムオブジェクトでラップすることと、RestKitリクエストを送信するオブジェクトが応答が返されるときにデリゲートとしても使用されることを保証できるかどうかについてです。
私はabstruseRESTAPI(Salesforce)を使用していますが、RestKitはSalesforceの特性の一部をうまく処理していないようです。たとえば、Salesforce REST APIを呼び出すと、部分的なデータセットが返される場合があります。次に、次のチャンクを取得するために従う必要のある「nextRecordsUrl」が与えられます。SalesforceとRESTを使用している他のユーザーも同じ問題に遭遇しています(https://groups.google.com/forum/#!msg/restkit/HJNjB7I6WVM/8u5n7nHoJQUJを参照)。Salesforceへの呼び出しをラップし、これらのリンクを自動的にたどり、返されたデータセットを正しく処理するクラスを作成しました。クラスインスタンスは、それ自体をREST呼び出しのデリゲートとして登録します。
私が書いたクラスはそれ自体でうまく機能しますが(単一のインスタンスがある場合)、他のクラスを作成し、それらのデータを独立して処理する必要があるいくつかのインスタンスがあります。ドキュメントとコードを読みましたが(これは学習経験であり、iOSを使用してから約1か月しか経っていません)、特定のインスタンスがその代理人として応答することが保証されているかどうかはわかりません。リクエストのみ、または別のインスタンスの応答を誤って取得する可能性がある場合。
たとえば、インスタンス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フレームワークの実際の実装を教えていただければ、それがどのように行われるかを学ぶことができますか?
どうもありがとう!