0

私のviewControllerで、xmlパーサーを開始するクラスQuestionParserのインスタンスを作成します。私の質問は次のとおりです。プログラムが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) の最後に到達し、必要なものをビュー コントローラーに返します。パーサーに時間がかかる場合、私はさまよっていますが、それでも機能しますか?

4

1 に答える 1

0

それについて心配する必要はありません。NSXMLParser の「解析」は同期的です。完了または失敗が戻らない限り、「解析」は終了します。

于 2013-11-22T10:12:13.350 に答える