私はNSXMLParserを使って私のiPhoneゲームにレベルをロードしています(明らかにXMLドキュメントとして保存されています)。 NSXMLParserはデリゲートを割り当て、重要なタイミングでメッセージを送信することによって機能します。他に何かをする前にレベル全体がロードされていることを確認するにはどうすればよいですか?私は私のメインクラスを代理人にしてparserDidEndDocumentを実装することができますが、これは非常にハッキリです。私のメインクラスは、解析の仕方について何も知る必要はありません!一方、レベルを解析するために別のクラス/デリゲートを作成すると、メインクラスは、解析クラスが継続的にクエリされたり、解析クラスがメッセージを送信したりしない限り、解析が完了した時点を知る方法がありません。いずれにしても、メインクラスは解析クラスの実装に結びついています。NSXMLParser:ロードが完了するまでどのように待つのですか?
このイベントドリブンビジネスをメインクラスから非表示にして、パーサーがレベルオブジェクトを返すようにすることはできますか? (つまり、newLevel = [[GameLevel alloc] initFromXML:xmlfile]。NSXMLParserを使用してレベルをロードし、終了したら何とか戻ってくるでしょう)。現在、私は外部DOMパーサを使用していますが、これがNSXMLParserでどのように行われるのか不思議です。
申し訳ありませんが、これはばかげた質問です - 私はこれに少しです!
編集:NSXMLParserクラスのリファレンスに従って、「イベントドリブン解析操作を開始する」parseメソッドは、正常に実行された場合はYESを返し、エラーが発生した場合はNOを返します。これは、解析が完了した後にのみ返されることを意味しますか?これは私の問題を解決するだろう。なぜなら、解析メソッドが返された後も解析が継続されていると仮定していたからだ。