在我的viewController中,我创建了一个类QuestionParser的实例,它将启动一个xml解析器。我的问题是:是否有可能因此解析器在程序到达compblock之前不会完成解析,从而返回nil参数甚至是错误?
MenuViewController.m
QuestionParser *parser = [[QuestionParser alloc]init];
[parser parseCategories:^(NSArray *categoryName, NSArray *categoryID)
{
if(categoryName)
{
NSlog(@"%@",categoryName);
}
}];
QuestionParser.m
(void)parseCategories:(myCategoryCompletion)compblock {
[self parseCategories];
compblock(categoryName,categoryID);
}
对不起,我没有提供所有信息,我会尽力澄清情况。在parseCategories
函数中我这样做:
- (void)parseCategories {
NSLog(@"<> start parsing categories <>"); categoryParser = [[NSXMLParser alloc]initWithContentsOfURL:[URL]]; [categoryParser setDelegate:self]; [categoryParser parse]; }
我希望完成块在我的解析器的委托“didFinishDocument
”到达之前不会结束。情况会是这样吗?
现在,在测试这个函数时,一切正常,我的解析器委托从xml创建我需要的数组,然后,它到达块compblock(categoryName,categoryID)的末尾,返回到我需要的视图控制器。我徘徊,如果解析器需要很长时间它仍然可以工作吗?
答案 0 :(得分:0)
您无需担心这一点。 NSXMLParser的“解析”是同步的。除非完成或失败,否则“解析”将结束。