Mixi iOS SDKのコールバックでリクエストを判別する方法

バージョン:Mixi iOS SDK 1.2.1

リクエスト送信

Mixi iOS SDKではMixiクラスのsendRequest:delegate:でリクエストを送信します。このメソッドは戻り値としてNSURLConnectionを返してきます。

NSURLConnection *connection = 
  [[Mixi sharedMixi] sendRequest:request delegate:self];

しかし、デリゲートに対するコールバックではそのNSURLConnectionを利用して判別することができません。

コールバック

あまり良い方法とは言えませんが、SDKに少々手を入れます。
コールバック時にNSURLConnectionを渡すようにします。
リクエスト送信時に得られたNSURLConnectionと比較(==)することでリクエストを判別することができます。

以下の変更をSDKに加えます。MixiDelegate.hはSDK直下に、MixiURLDelegate.mはSDK内のNetworkingディレクトリに存在します。

$ diff original/MixiDelegate.h modified/MixiDelegate.h 
30c30
< - (void)mixi:(Mixi*)mixi didFinishLoading:(NSString*)data;
---
> - (void)mixi:(Mixi*)mixi didFinishLoading:(NSString*)data connection:(NSURLConnection *)connection;
38c38
< - (void)mixi:(Mixi*)mixi didSuccessWithJson:(NSDictionary*)data;
---
> - (void)mixi:(Mixi*)mixi didSuccessWithJson:(NSDictionary*)data connection:(NSURLConnection *)connection;
$ diff original/MixiURLDelegate.m modified/MixiURLDelegate.m 
52,53c52,53
<         if ([self.delegate respondsToSelector:@selector(mixi:didFinishLoading:)]) {
<             [self.delegate mixi:self.mixi didFinishLoading:@""];
---
>         if ([self.delegate respondsToSelector:@selector(mixi:didFinishLoading:connection:)]) {
>             [self.delegate mixi:self.mixi didFinishLoading:@"" connection:connection];
59,60c59,60
<     if ([self.delegate respondsToSelector:@selector(mixi:didFinishLoading:)]) {
<         [self.delegate mixi:self.mixi didFinishLoading:result];
---
>     if ([self.delegate respondsToSelector:@selector(mixi:didFinishLoading:connection:)]) {
>         [self.delegate mixi:self.mixi didFinishLoading:result connection:connection];
81,82c81,82
<             if ([self.delegate respondsToSelector:@selector(mixi:didSuccessWithJson:)]) {
<                 [self.delegate mixi:self.mixi didSuccessWithJson:json];
---
>             if ([self.delegate respondsToSelector:@selector(mixi:didSuccessWithJson:connection:)]) {
>                 [self.delegate mixi:self.mixi didSuccessWithJson:json connection:connection];