0

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

菜单视图控制器.m

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

QuestionParser.m

(void) parseCategories:(myCategoryCompletion) compblock {

[自我解析类别];

compblock(categoryName,categoryID); 

}

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

-(无效)parseCategories {

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

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

  [categoryParser setDelegate:self];

  [categoryParser parse]; 
}

而且我希望完成块不会在我的解析器委托“ didFinishDocument”到达之前结束。会是这样吗?

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

4

1 回答 1

0

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

于 2013-11-22T10:12:13.350 回答