在我的 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) 的末尾返回我需要的视图控制器。如果解析器需要很长时间,我会徘徊它还能工作吗?