【发布时间】:2014-12-16 20:53:49
【问题描述】:
我有一个发送 web 服务调用并通过委托传递响应的类。 我现在想在视图和我的 web 服务类之间添加一个缓存层。 这个新类应该序列化调用,每次调用都会延迟到前一个调用的回调完成。
我试图通过 GCD 实现这一点:
- (void)callWebserviceFunctionX {
dispatch_group_notify(self.serviceGroup, self.serialQueue, ^{
dispatch_group_enter(self.serviceGroup);
// call webservice
});
}
在回调中:
-(void)callbackFunctionXWithResponse:(id)response {
// do something
dispatch_group_leave(self.serviceGroup);
}
使用dispatch_group_enter和dispatch_group_leave对每个呼叫及其回调进行分组并使用dispatch_group_notify等待之前的组的想法。
但是,这种方法似乎没有按我的预期工作。 有没有更好的方法来实现这一点?
更新:
我尝试了dispatch_group_enter、dispatch_group_leave、dispatch_group_notify和dispatch_group_async的所有组合,但没有成功。
我也想过NSOperation和NSOperationQueue,但是——如果我理解正确的话——那将迫使我为每个Web服务调用编写一个单独的类。
还有其他我没有想到的选择吗?
【问题讨论】:
标签: ios web-services serial-processing