2013-10-30 70 views
0

在我的viewController中,我创建了一个类QuestionParser的实例,它将启动一个XML解析器。我的问题是:是否有可能解析器在程序到达compblock之前不会完成解析,从而返回nil参数或者甚至是错误?完成块

MenuViewController.m

QuestionParser *parser = [[QuestionParser alloc]init]; 
[parser parseCategories:^(NSArray *categoryName, NSArray *categoryID) 
{ 
    if(categoryName) 
    { 
     NSlog(@"%@",categoryName); 
    } 
}]; 

QuestionParser.m

(无效)parseCategories:(myCategoryCompletion)compblock {

[自parseCategories];

compblock(categoryName,categoryID); 

}

我很抱歉,我没有提供所有的信息,我会尝试澄清情况。在parseCategories功能我这样做:

- (无效){parseCategories

NSLog(@"<> start parsing categories <>"); 

    categoryParser = [[NSXMLParser alloc]initWithContentsOfURL:[URL]]; 

    [categoryParser setDelegate:self]; 

    [categoryParser parse]; 
} 

,我希望这样结束块不我解析器的委托 “didFinishDocument” 到达之前结束。情况会是这样吗?

现在,虽然测试这个函数,一切正常,我的解析器委托创建我需要从XML的数组,然后,它到达块compblock(categoryName,categoryID)结束返回视图控制器我什么需要。我徘徊,如果解析器需要很长时间它仍然会工作?

+1

无法理解问题。 – Abizern

+2

您尚未提供有关'parseCategories'方法的足够信息。 – Wain

+0

为了回答你的问题,我们需要看看'parseCategories:'的实现。 – neilco

回答

0

您不必担心这一点。 NSXMLParser的“解析”是同步的。除非完成或失败返回,否则“解析”将结束。