我有一個類可以用不同的數據多次調用。GCD - 在完成其他人後執行方法
該類調用Web服務,解析它對NSDictionary的響應,並將數據保存在Core Data上。
Web服務的調用和核心數據的保存在不同的線程中使用核心數據隊列完成,以便UI保持響應。
類:
- (void)refreshDataFromWebService:(NSString *)webserviceWSDL
{
dispatch_queue_t receiveActivities = dispatch_queue_create("com.myApp.ws.wsdlMethod", NULL);
dispatch_async(receiveData, ^(void)
{
//call web service
//...
//parse received data to NSDictionary
//...
});
dispatch_release(receiveData);
}
//some work
//the class that works with the WS, calls a method on it's delegate, and the saveData is called.
- (void)saveData
{
dispatch_queue_t request_queue = dispatch_queue_create("com.myApp.insertDataOnCoreData", NULL);
dispatch_async(request_queue, ^{
//save data to CoreData with new Manage Object Context
//...
//...
});
dispatch_release(request_queue);
}
的問題是,我需要調用這個類約15倍,並且以某種順序。
這樣做的最佳方法是什麼?
要我打電話:
[SomeClass refreshDataFromWebService:method_1];
[SomeClass refreshDataFromWebService:method_2];
[SomeClass refreshDataFromWebService:method_3];
[SomeClass refreshDataFromWebService:method_4];
,或者我應該做不同的方式?
目標是僅在method_1在CoreData上完成保存後調用method_2,這是由於關係。
感謝您的寶貴幫助,
銳洛佩斯
@Jow這個過程現在就像我上面展示的那樣工作。調用WS的Class調用解析響應後保存數據的方法。我會更新我的帖子,使其變得清晰。謝謝。 –
所以你所說的是:dispatch_queue_t queue; queue = dispatch_queue_create(「com.example.MyQueue」,NULL); dispatch_async(myQueue,^ {call method1,method2,... }); 這是正確的嗎? –