2010-12-28 8 views
1

私のアプリケーションは、XMLファイルを解析するスレッドを2つ起動し、メインスレッドで条件を入れます: while(parse == YES) { nslog( "do nothing"); } [tableview reloadata];iphone、multithread

が、私は関数内で配列変数を読んで「cellforpathatindex」 私のようなエラーが発生しました: 「私は空の配列を読み取ろう」しかし、私はそれが正常に動作しているメインスレッドをデビューや睡眠を作るとき。 解析時に配列変数を直接取得するにはどうすればいいですか

答えて

1

このような状況で使用できるパターンは2つあります。どちらも、ワーカースレッドが作業(XML構文解析)が終了しました:

ワーカースレッドが作業を終えた
  • 、彼らはそれを実装するデリゲートプロトコルを定義NSNotificationCenter
  • を経由して通知を掲示し、メインスレッドでクラスを持っています。そのクラスのインスタンスをワーカースレッドに渡します。これはデリゲートになります。ワーカースレッドが作業を終了したら、彼らは(例えば-parseFileDidFinish:)デリゲートにメッセージを送る
0

素敵ANSを@gjd :)第二のオプションは、@ user482611が使用するものです。解析が終了しない限り、メインスレッドのテーブルをリロードしないでください。