我有一个类可以用不同的数据多次调用。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,... }); 这是正确的吗? –