簡體   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