【发布时间】:2013-06-25 03:08:59
【问题描述】:
在我的应用程序中,我很少有方法相互调用来解析 XML 下载的提要,我需要在后台使用 NSOperation 和 NSOperationQueue 进行所有解析,因为现在它正在主线程中执行并冻结整个应用程序。
我的应用程序逻辑如下所示:
-(IBAction) callSync{
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:APIURL]];
AFURLConnectionOperation *operation = [[AFURLConnectionOperation alloc] initWithRequest:request];
operation.completionBlock = ^{
//1
[self startParsing:operation.responseString];
};
[operation start];
}
//2
-(void)startParsing:(NSString*)str
{
//some logic
[self traverseXML:str];//Call traverseXML
}
//3
- (void) traverseXML:(TBXMLElement *)element {
//Some logic
[self saveFile:localWS];//CallsaveFile
}
//4
-(void) saveFile : (WorkFile *)_workFile{
//Some logic
}
我的问题是:我是否应该为每种方法创建一个NSOperation 类,我的意思是一个用于startParsing,一个用于traverseXML,等等?或者只是创建一个NSOperation 子类并在里面做所有的实现方法就足够了。
【问题讨论】:
-
顺便说一句,我没想到上面的代码示例会阻塞您的主线程(这是 AFNetworking 的乐趣之一)。你是说有吗?
-
是的,它阻塞了主线程,我的应用程序被冻结了很长时间,直到所有 XML 提要都被完全解析。
标签: ios concurrency nsoperation nsoperationqueue