异步环境中的同步调用

Synchronous calls in an asynchronous environment

我正在使用 AFNetworking 2.0 和 Objective-C 创建一个 class,它将客户端数据库与服务器上的数据库同步。 当然,客户端不应该在发生这种情况时注意到,因此 class 必须使调用异步。 但是,此 class 中的某些调用取决于其他调用的结果。

示例:

斑马只能在哺乳动物完成后更新其属性,因为它使用了一些哺乳动物属性 (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];

在成功块中,您安排了第二个操作。

2)第二种方式
一次创建两个操作并设置第一个操作如何依赖于第二个操作(但需要额外的代码来管理共享数据)。

[operation2 addDependency:operation1]; 
[self.operationQueue addOperation:operation1];
[self.operationQueue addOperation:operation2];