現在、ムービークリップからフレームを抽出するアプリケーションをプログラミングしています。アプリケーションがフリーズするのを防ぐために、別のスレッドで抽出を行うように設計しました。抽出プロセス自体には多くのリソースが必要ですが、シミュレータで使用するとうまく動作します。しかし、iPad用にビルドするときに問題があります。別のアクション(私はフレームを抽出している間に私のAVプレーヤーに再生を指示している)を実行すると、スレッドが予期せず動作を停止し、それが殺されていると思います。OSによってスレッドが殺されています
私はたくさんのリソースを使っていると思いますが、完全にはわかりません。
ここに私の質問があります: 1.私のスレッドが停止しているかどうかは、どうすればわかりますか? 2.処理が過度に行われている場合、どうすればよいですか?私は実際にこの行動を実行する必要があります。相続人
使用していくつかのコードイム: をスレッドを作成するには:
[NSThread detachNewThreadSelector:@selector(startReading) toTarget:self withObject:nil];
私は、そんなに 感謝をあなたが必要とするすべての情報を投稿します!
更新 私は現在GCDを使用していますが、それは私のためのスレッドを設定します。しかし、OSは依然としてスレッドを強制終了します。
私はそれがいつ起こっているのか正確に知っています。私が[AVplayer play]に言ったとき。それはスレッドを殺す。
この問題は、のみ、実際のiPadではなく、シミュレータ
質問する必要がある場合は、ディスパッチキュー(GCD)や操作キュー(NSOperationQueue)のように、より高いレベルの抽象化を使用してみてください。[スレッドから移動する](http://developer.apple.com/library/mac/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/ConcurrencyandApplicationDesign/ConcurrencyandApplicationDesign.html#//apple_ref/doc/uid/TP40008091-CH100- SW8)、または[GCD](http://stackoverflow.com/questions/7941860/#7941898)または[NSOperationQueue](http://stackoverflow.com/questions/830218/)の例を探してください。それは非常に便利なものです。 – Jano
あなたのアプリがクラッシュしますか?もしそうなら、クラッシュレポートは何を言いますか? AVPlayerがスレッドセーフであることは確かですか?なぜなら[AVplayer play]を呼び出してバックグラウンドスレッドで同時にアクセスすると、それが問題になるからです。 – JeanLuc
抽出スレッドはバックグラウンドスレッドとして実行されていますか?私はObjective-Cを学んでいますが、バックグラウンドスレッドとして実行できるのであれば、OSによって殺されるのを助けることができます。 –