2011-11-03 54 views
0

讓我們想象一下我有一個方法:-[myClass getDataForUser:user],當它完成時,它調用委託方法gotData:,結果顯示在我的主類中。如果我做兩個調用getDataForUser:,例如:區分對相同委託方法的調用

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

我怎麼可以在委託方法這兩個電話之間區別?

編輯:

圖書館是MGTwitterEngine,在兩個電話我做的-[_engine getDirectMessagesSinceID:1 startingAtPage:1];[_engine getSentDirectMessagesSinceID:1 startingAtPage:1];和委託方法是directMessagesReceived:forRequest:

回答

1

爲每個調用使用一個MGTwitterEngine實例,併爲每個實例分配一個不同的委託對象。在每個這些委託對象內,可以存儲用戶標識。設置這些代表對象,以便他們可以接受您的原始類別爲其代表代表。然後你可以最後使用委託gotData:(id)數據給用戶:(NSString *)用戶。不漂亮,但可能工作。

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; 
} 
+0

是的,但請記住,類'委託是我不能編輯的類(類或庫是MGTwitterEngine,並且方法是'[_engine getDirectMessagesSinceID:1 startingAtPage:1];'和'[_engine getSentDirectMessagesSinceID: 1 startingAtPage:1];') – pmerino

+0

委託方法是否保證在'getData'調用返回之前調用,或者它是異步的? – Kevin

+0

getData的數據獲取委託方法 – pmerino