繁体   English   中英

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

[英]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, request2user1, user2 ,并将请求和用户存储在适当的变量中,检查哪个id与哪个名称(在委托中)相符:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM