我正在尝试实现一种根据滑块值更改图像色调的方法,但是当我连续更改滑块值时,它将显示内存警告,并且应用程序崩溃。

这是我的示例代码,我尝试使用dispatch_async

-(void)valueChanged
{
    float slideValue = slider.value;
    NSLog(@"%0.f",slideValue);

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0.5), ^{

    dispatch_async(dispatch_get_main_queue(), ^{
            [filter setValue:@(slideValue)
                      forKey:@"inputIntensity"];
            CIImage *outputImage = [filter outputImage];


            CGImageRef cgimg = [context createCGImage:outputImage
                                             fromRect:[outputImage extent]];

            UIImage *newImage = [UIImage imageWithCGImage:cgimg];
            imageView.image = newImage;


       });

    });

}

最佳答案

您正在泄漏内存,这意味着您正在分配不释放的对象,因此出现了内存警告。

使用完图像后是否尝试过释放它们?

CGImageRelease(cgimg)

在方法的最后

09-26 11:55