我正在尝试实现一种根据滑块值更改图像色调的方法,但是当我连续更改滑块值时,它将显示内存警告,并且应用程序崩溃。
这是我的示例代码,我尝试使用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)
在方法的最后