代表困惑.. 我如何知道几个代表何时完成了他们的任务?

Posted

技术标签:

【中文标题】代表困惑.. 我如何知道几个代表何时完成了他们的任务?【英文标题】:Delegate confusion .. How do I find out when several delegates have finished their task? 【发布时间】:2010-10-14 12:43:07 【问题描述】:

我已经构建了一个基本的 Web XML 到 Core Data 解析系统,但我对如何同时启动多个解析器以及知道它们何时完成感到困惑。

这是我当前的设置,它只获取一个已解析的 xml 文件(“新闻”)。但我有几个需要解析的 xml 文件(“运动”、“商店”等)。如何启动所有这些,并知道它们何时完成?

// ViewController.m

DataGrabber *dataGrabber = [[DataGrabber alloc] init];
dataGrabber.delegate = self;
[dataGrabber getData:@"news"];


// DataGrabber delegate method (within ViewController) which gets called when dataGrabber has got all of the XML file
- (void) dataGrabberFinished:(DataGrabber *)dataGrabber

   NSManagedObjectContext *context = [self managedObjectContext];
   NSError *parseError = nil;
   // Parser puts the xml into core data. Do I need delegate on this too?
   Parser *xmlParse = [[Parser alloc] initWithContext:context];
   [xmlParse parseXMLFileWithData:dataGrabber.payload parseError:&parseError];
   [xmlParse release];

(这是这个问题的后续 - Returning data from data-grabbing class from web?)

【问题讨论】:

【参考方案1】:

一种选择是计算您创建的数量,然后让每个人回调一个从该总数倒计时的方法。当它回到零时,它们都完成了。

您需要为解析器设置一个委托,就像为下载器所做的一样。

【讨论】:

以上是关于代表困惑.. 我如何知道几个代表何时完成了他们的任务?的主要内容,如果未能解决你的问题,请参考以下文章

SOA 和 ESB 的区别

对 python 装饰器感到困惑。何时/如何称呼他们? [复制]

WLink vs WANchor / 何时使用哪一个

编辑 UITextField 时如何关闭键盘

我如何知道用户何时到达 UITextView 中文本的末尾

对Objective-C中的委托有点困惑