我正在使用AFNetworking
的AFHTTPClient
類來與Rails後端進行通信。檢測一個方法是否從一個塊被調用
當創建對象時,我想使用批API在服務器上運行幾個API
調用(如果您想知道,我使用的是batch_api)。
很好地擴展AFHTTPClient
我想有一個API,它應該是這樣的:
[[[SPRRailsClient] sharedInstance] batchOperations:^ {
NSMutableURLRequest *request = [[SPRRailsAPIClient sharedClient]
requestWithMethod:@"GET"
path:myPath
parameters:parameters];
AFHTTPRequestOperation *operation = [[SPRRailsAPIClient sharedClient]
HTTPRequestOperationWithRequest:request
success:nil
failure:nil];
}];
訣竅將覆蓋SPRRailsClient
(我AFHTTPClient
子類),所以當requestWithMethod:path:parameters:
和HTTPRequestOperationWithMethod:success:failure:
是一個batchOperations
內調用如果行爲以不同的方式(排隊的東西,或重新運行AFOperation
的不同子類)
這個設計的整潔的事情是,它可以讓我保留現有的代碼,只能包裝它的智慧爲了使某些調用在「批處理模式」下執行,請禁止該塊。
我的問題是:如何檢測一個方法是從一個塊中調用的?我需要requestWithMethod:path:parameters:
檢測到,並且:
- 如果從
batchOperations
塊調用,表現方式不同。 - 如果不是從
batchOperations
塊中調用,只需撥打super
即可。
我知道只要在SPRRailsClient
上添加兩個附加方法會更簡單,但我認爲這看起來更好。
而且,我想這是可能的,因爲UIView
動畫一些方法從動畫塊中調用時不同的行爲方式,並NSManangedObjectContext
的performBlock:
可能是做類似的事情爲好。
好主意!也許我想要做的是過度殺傷... – pgb