我正在使用 AFNetworking 2.0 和 Objective-C 创建一个类,用于将客户端数据库与服务器上的数据库同步。 当然,当这种情况发生时,客户端不应该注意到,所以该类必须使调用异步。 但是,此类中的某些调用依赖于其他调用的结果。
示例:
- 对象:哺乳动物,id = 15,新 id = 26
- 子对象:斑马,clade_id = 15
zebra 只能在哺乳动物完成后更新其属性,因为它使用了一些哺乳动物属性 (id),如果过早发送调用,则会导致数据损坏(id = 15 而不是正确的 26) .
我的问题是,如何使用 AFNetworking 以用户不会注意到(异步)的方式进行这些同步调用(哺乳动物完成后的斑马线)。
感谢您的回答。
最佳答案
您不需要使用同步调用。
1)第一种方式
// create request with URL
NSMutableURLRequest *request = ....;
// create AFHTTPRequestOperation
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperationManager manager] HTTPRequestOperationWithRequest:request success:^{success block} failure:^{failure block}];
// Call operation
[self.operationQueue addOperation:operation];
在成功 block 中,您安排了第二个操作。
2)第二种方式
一次创建这两个操作并设置第一个操作如何依赖于第二个操作(但需要额外的代码来管理共享数据)。
[operation2 addDependency:operation1];
[self.operationQueue addOperation:operation1];
[self.operationQueue addOperation:operation2];
关于ios - 异步环境中的同步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31051158/