Решение, предложенное постом SO, на который вы ссылаетесь, может быть реализовано следующим образом:
1) создайте оболочку для MGTwitterEngine;эта оболочка предоставит любой селектор MGTwitterEngine, который вам нужен, и добавит к каждому из них параметр, который идентифицирует контроллер представления, который его вызывает;
2) ваша оболочка MGTwitterEngine будет действовать как уникальный делегат для всех запросовотправлено;
3) для каждого запроса, полученного оболочкой от контроллера представления, оболочка будет хранить адрес контроллера представления в NSMutableDictionary, связанном с идентификатором twitter;
4) при ответевозвращается, делегат (который является тем же объектом, что и обертка) узнает, какой контроллер представления отправил запрос изначально (путем поиска в словаре идентификатор твиттера, который пришел с ответом), и перенаправит ответ на него.
Надеюсь, это поможет ....
РЕДАКТИРОВАТЬ:
это то, как вы могли бы сделать это (я включаю только 1 вызов API и только соответствующий код):
@interface TwitterClientViewController : UIViewController <MGTwitterEngineDelegate> {
}
@end
@implementation TwitterClientViewController;
- (void)requestListOfUsers:(NSString*)username {
[twitterEngineSingleton getListsForUser:username requestDelegate:self];
}
- (void)requestSucceeded:(NSString*)connectionIdentifier {
NSLog(@"Hello");
}
@end
@interface AdvancedTwitterEngine : NSObject <MGTwitterEngineDelegate> {
MGTwitterEngine* _engine;
NSMutableDictionary* _callerIds;
}
-(NSString*)getListsForUser:(NSString*)username requestDelegate:(id<MGTwitterEngineDelegate>)delegate;
@end
@implementation AdvancedTwitterEngine;
-(void)init {
if (self = [super init]) {
_engine = [[MGTTwitterEngine alloc] initWithDelegate:self];
_callerIds = <init>
}
return self;
}
-(NSString*)getListsForUser:(NSString*)username requestDelegate:(id<MGTwitterEngineDelegate>)delegate {
NSString* twId = [_engine getListsForUser:username];
[_callerIds setObject:controller forKey:twId];
return twId;
}
//-- delegate methods
- (void)requestSucceeded:(NSString*)connectionIdentifier {
id<MGTwitterEngineDelegate> dlg = [_callerIds objectForKey:connectionIdentifier];
[dlg requestSucceeded:connectionIdentifier];
}
@end