0

NSOperation から継承されたオブジェクトを使用してダウンロードを行っています。ドキュメントを読みました。操作が完了したら、

[self.delegate performSelectorOnMainThread:@selector(operationDidFinish:) withObject:self waitUntilDone:YES];

方法。UIKit はスレッド セーフではないため、メイン スレッドで呼び出す必要があり、これらの非スレッド セーフ フレームワークの場合はドキュメントに記載されています。デリゲート メソッドで pdf または画像を描画していますが、メイン スレッドで描画されるため、描画が完了するまでユーザー インターフェイスが非常に遅くなります。この問題を回避する良い方法を教えていただけないでしょうか。

4

1 に答える 1

1

画像データをダウンロードしてデコードし、画像をレンダリングしていると仮定しています。最後のレンダリングは、メイン スレッドで実行する必要があります。デコード部分をダウンロード スレッドに移動できますか? たとえば、CGImage 呼び出しを使用して png または jpeg をデコードすると、operationDidFinish を呼び出す前に CGImageRef を使用できるようになります。PDF を画像として操作できる場合は、メイン スレッドでデコードするよりも変換する方がよいでしょう。

于 2010-04-15T11:36:12.970 に答える