[英]Differentiate between calls to the same delegate method
假设我有一个方法: -[myClass getDataForUser:user]
,完成后它将调用委托的方法gotData:
结果将出现在我的主类中。 如果我两次调用getDataForUser:
例如:
[myClass getDataForUser:@"user1"];
[myClass getDataForUser:@"user2"];
如何在委托方法中区分这两个调用?
该库是MGTwitterEngine,我进行的两个调用是-[_engine getDirectMessagesSinceID:1 startingAtPage:1];
和[_engine getSentDirectMessagesSinceID:1 startingAtPage:1];
委托方法是directMessagesReceived:forRequest:
为每个调用使用MGTwitterEngine实例,并为每个实例指定不同的委托对象。 在每个委托对象中,您可以存储用户ID。 设置这些委托对象,以便它们可以接受原始类作为其委托。 然后,您可以最终将委托getData:(id)data用于User:(NSString *)user。 不漂亮,但是可以用。
在委托的方法中添加一个参数:
[delegate gotData:(id)data forUser:(NSString *)user]
还有其他方法,但还不如干净和容易
编辑:确定,它在库中,因此无法更改。 但是,委托确实有一个for[something]
参数,在本例中为forRequest
。 因此,您所需要做的就是找到一种将请求与用户名关联的方法。 我建议将它们放在地图中,将request
映射到user
。 或者,如果只有两个,则可以创建几个变量request1, request2
和user1, user2
,并将请求和用户存储在适当的变量中,检查哪个id与哪个名称(在委托中)相符:
if(thisRequest == request1) {
thisUser = user1;
} else {
thisUser = user2;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.