いくつかのパラメーターに基づいて画像が再作成される iPhone アプリがあります。このイメージの再作成には時間がかかることがあるため、別のスレッドを使用してイメージを作成します。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0.0);
// costly drawing
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
dispatch_async(dispatch_get_main_queue(), ^{
self.image = newImage;
});
});
このイメージの再作成に影響を与えるパラメータは、イメージが再作成されるよりも速く変化する可能性があるため、必要に応じて再作成を「一時停止」し、そのような dispatch_async 呼び出しを一度に 1 つだけ実行したいと考えています。
次に、イメージを再作成する要求がさらに到着すると、最後の要求 (最新のパラメーターを使用) のみを記憶し、イメージの再作成が終了するとすぐに、それらのパラメーターの要求を開始します。
他のすべての呼び出しが行われないことは問題ではありません。画像はいずれにせよ上書きされます。
これを達成するための最良の方法は何ですか?