我有一个 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 调用。
然后随着更多重新创建图像的请求到达,只记住最后一个(具有最新参数),并且在图像重新创建完成后立即为这些参数启动一个。
没关系,所有其他调用永远不会完成,无论如何图像都会被覆盖。
实现这一目标的最佳方法是什么?