2013-10-30 49 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的「解析」是同步的。除非完成或失敗返回,否則「解析」將結束。