区分对同一委托方法的调用

时间:2011-11-03 17:33:32

标签: objective-c ios cocoa-touch delegates

让我们假设我有一个方法:-[myClass getDataForUser:user],当它完成时,它调用委托的方法gotData:,结果出现在我的主类上。如果我对getDataForUser:进行两次调用,例如:

[myClass getDataForUser:@"user1"];
[myClass getDataForUser:@"user2"];

如何在委托方法中区分这两个调用?

编辑:

图书馆是MGTwitterEngine,我做的两个电话是-[_engine getDirectMessagesSinceID:1 startingAtPage:1];[_engine getSentDirectMessagesSinceID:1 startingAtPage:1];,委托方法是directMessagesReceived:forRequest:

2 个答案:

答案 0 :(得分:1)

为每个调用使用MGTwitterEngine实例,并为每个实例提供不同的委托对象。在每个委托对象中,您可以存储用户标识。设置这些委托对象,以便他们可以接受原始类作为他们的委托。然后你可以最终使用委托gotData:(id)数据forUser:(NSString *)user。不漂亮,但可能会奏效。

答案 1 :(得分:0)

为委托方法添加一个参数:

[delegate gotData:(id)data forUser:(NSString *)user]

还有其他方法,但不是那么简洁

编辑:好的,它在库中,因此无法更改。但是,委托确实有一个for[something]参数,在本例中为forRequest。因此,您需要做的就是找到一种将请求与用户名相关联的方法。我建议将它们放在地图中,将request映射到user。或者,如果你只有两个,你可以只做几个变量request1, request2user1, user2并将请求和用户存储在适当的变量中,检查哪个id与哪个名称一致(在委托中) ):

if(thisRequest == request1) {
    thisUser = user1; 
} else {
    thisUser = user2;
}