巨大な XML ファイルをダウンロードして解析する必要があります。データのダウンロードは NSOperation で行われ、ダウンロードが完了すると NSXMLParser もトリガーされます。
ユーザーがいつでもプロセス全体をキャンセルできるようにしたいので、ダウンロードを停止して操作をキャンセルするキャンセル ボタンを追加しました。
今私の問題は次のとおりです。私の NSOperation はバックグラウンドで実行されますが、NSXMLParser が解析を開始すると UI が完全にブロックされます。キャンセルボタンを押しても意味がありません。
これはどのように起こりますか?NSOperation 内からパーサーをトリガーしているので (ダウンロードの終了後)、解析もバックグラウンドで実行する必要があると思いました?!
!!!編集!!!: テストをしました。パーサーが実行されているスレッドを確認しました。メインスレッドです。これはどのように起こりますか?NSOperation はバックグラウンド スレッドで開始されますが、パーサーをメイン スレッドに配置するにはどうすればよいでしょうか? どうすればこれを回避できますか?