【发布时间】:2015-07-19 00:11:21
【问题描述】:
考虑以下一段代码,它是获取特定用户名的用户数据的简单请求。
- (void)updateInformation
{
AFHTTPRequestOperationManager *httpManager = [AFHTTPRequestOperationManager sharedManager];
NSDictionary *params = @{@"username": self.username};
AFHTTPRequestOperation *operation = <create_op>
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id response){
// use response to populate user
// self.fullname = response[@"fullname"];
}failure:nil];
[httpManager.operationQueue addOperation:operation];
}
此代码是特定实体类别的一部分,例如User。
现在通常在scheduleBlock 中调用此方法。 scheduleBlock (http://cocoadocs.org/docsets/XMPPFramework/3.6.1/Classes/XMPPCoreDataStorage.html#//api/name/scheduleBlock:):
此方法异步调用 storageQueue 上的给定块 (dispatch_async)。
现在我的问题很简单——与实际调用 updateInformation 方法的 storageQueue 相比,请求响应是在不同的线程中接收的 => 需要一个不同的托管对象上下文创建用于存储对象,然后将这些更改与存储队列的上下文同步。 是这样吗?
另一个问题是 - 有没有更好的方法来处理这个问题,即不创建新上下文并尝试将其与存储队列上下文同步?
【问题讨论】: