[英]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.