私のプロジェクトにはAPIModel
、APIへの必要なすべての呼び出しを処理するシングルトンモデルクラスがあります。私はRestKit
HTTPヘッダーを頻繁に使用して設定しています。
これは私の問題です:
AModel
- (void)makeRequest {
[APIModel apiObject].getSpecificDataDelegate = self;
[[APIModel apiObject] loadSpecificData];
}
BModel
- (void)makeRequest {
[APIModel apiObject].getSpecificDataDelegate = self; // removes AModel as delegate so it ends up receiving both responses
[[APIModel apiObject] loadSpecificData];
}
AModel
自分自身を代理人として設定し、次にBModel
自分自身を代理人として設定します。BModel
最終的に両方のAPI応答を受信します。
これを解決するための私の解決策は、APIModel
それを必要とするクラスごとにのさまざまなインスタンスを起動することでした。
- (void)makeRequest {
self.apiObject.getSpecificDataDelegate = self;
[self.apiObject loadSpecificData];
}
- (APIModel *)apiObject {
if (!_apiObject) apiObject = [[APIModel alloc] init]; // classes own instance
return _apiObject;
}
何らかの理由で、これらのAPIModel
インスタンスのすべてがHTTPヘッダーをリクエストに適切にアタッチすることは決してないため、API側ですべて失敗します。シングルトンオブジェクトをまだ使用しているモデルは、引き続き正常に機能します。
RKClientのシングルトン(sharedClient)の問題だと思いますが、よくわかりません。これはnilではなく、HTTPヘッダーを設定し、それらを印刷することもできますが、APIは例外をスローし続けます。シングルトンを使用していないときにHTTPヘッダーがリクエストにアタッチできないという明らかな理由はありますか?利用できる別の、またはより良いデザインパターンはありますか?
私はこの質問を見つけました。洞察に満ちていますが、私の問題とは完全には関連していませんが、同様のことを行う方法はありますか?
私は使用することを考えましたが、それから、それらのためのデータが何であるかを許可し、知るNSNotificationCenter
ために、より多くの情報を渡す必要があります。AModel
BModel