我认为我在正确的轨道上,但只是想在这里仔细检查一下。我最近开始使用 AFNetworking 从数据库中获取一个大型 XML 文件,然后我需要对其进行解析(我已经弄清楚了那部分)。我希望在后台线程上进行解析,然后在主线程上更新我的 UI。所以我在 AFXMLRequestOperation 的成功块中添加了另一个 dispatch_async 块:
self.xmlOperation =
[AFXMLRequestOperation XMLParserRequestOperationWithRequest: request
success: ^(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
XMLParser.delegate = self;
[XMLParser setShouldProcessNamespaces:YES];
[XMLParser parse];
dispatch_async(dispatch_get_main_queue(), ^{
[self.searchResultViewController didFinishImport];
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];
});
});
}
failure: ^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, NSXMLParser *XMLParser) {
// show error
}];
[self.xmlOperation start];
是正确/正确/首选的方法吗?