dispatch_async()“默默地”失败 - 为什么?

时间:2012-11-10 03:55:28

标签: ios dispatch-async

所有

我正在解决dispatch_async()问题。我的目标是让TableViewController(TopStoriesTVC)显示一些rss feed。 xml提取和解析被分解为一个名为Reporter的类。

TopSToriesTVC告诉记者fetchNewsFrom:。一旦完成,并且xml解析完成,Reporter将调用TopStoriesTVC的fileStories:fromReporter:method。

           -(void) fetchNewsFrom:(NSString *)url 

TopStoriesTVC ===================================>记者

             -(void)fileStories: fromReporter:
           <===================================

这在单线程环境中很有用。但是,我想抓住几个rss流,所以而不是:

//在TopStoriesTVC中......

-(id)initWithNibName:bundle: {
     // stuff omitted
     [self.newsReporter fetchNewsFrom:TOP_STORIES_NEWS_URL];
     [self.sportsReporter fetchNewsFrom:TOP_STORIES_SPORTS_URL];

}

//在Reporter中......

-(void)parserDidEndDocument:(NSXMLParser *)parser{   
    [self.bureauChief fileStories:self.items fromReporter:self];
}

效果很好,我试图用dispatch_async()包装它们:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    [self.newsReporter fetchNewsFrom:TOP_STORIES_NEWS_URL];
    [self.sportsReporter fetchNewsFrom:TOP_STORIES_SPORTS_URL];
});

dispatch_async(dispatch_get_main_queue(), ^{
    [self.bureauChief fileStories:self.items fromReporter:self];
});

那些根本不起作用。我正在使用get_main_queue(),因为fileStories:fromReporter:包含一个[self.tableView reloadData];语句,我理解需要在主线程上发生。

当我说他们“根本不工作”时,具体来说,我得到a)控制台中没有错误消息,b)tableView中没有任何内容,c)我的NSXMLParserDelegate方法甚至都没有被调用,d)设置调试语句只会让我陷入一堆汇编语言。

有人能发现这里出了什么问题吗?或者有任何建议吗?我真的很感激。

0 个答案:

没有答案