0

メイン スレッドが UI を処理している間に、いくつかのスレッドが負荷の高い作業を行っています。スレッドは、プログレス バーを更新するために時々メイン スレッドにコールバックします。

全体として、それはそれほど安定していません。ロジックに関連する問題を修正しましたが、特に 1 つが解決しません。停止ボタンのように機能するコードがいくつかあります。つまり、スレッドが次に何が起こっているかを確認するときに、スレッドがそれ自体を更新しようとしないことを意味します。

停止ボタンを押すと、次のエラーが表示されることがあります。

-[NSRunLoop isEnabled]: 認識されないセレクターがインスタンスに送信されました...

スレッドの作業フェーズの終わりに向かって停止ボタンを押すと発生するようです。この間、次のことを除いてあまり機能しません。

  • 一部の OpenGL メモリを解放する
  • メインスレッドで最終メソッドを呼び出す
  • 自動解放プールをドレインする
  • そして戻る

しかし、率直に言って、エラー メッセージは不可解すぎて、どこから始めればよいかさえわかりません。誰でも NSRunLoop に光を当てることができますか?この「isEnabled」メソッドが何であるか、または何が問題になっているのかを一般的に突き刺すことはできますか?

4

1 に答える 1

1

ゾンビを有効にして実行してみてください。スレッドからの runloop オブジェクトの 1 つが破棄され、別のオブジェクトによって上書きされても驚かないでしょうが、以前の場所への古いポインターがまだ残っています。

于 2010-08-26T15:45:44.347 に答える