滤镜效果显示一些警告执行昂贵的无法操作!申请图像后还会有一些内存泄漏吗?
我的代码是: -
CIImage *imagee = [Filter outputImage];
CIContext *context = [CIContext contextWithOptions:nil];
CGImageRef cgImage = [context createCGImage:
imagee fromRect: imagee.extent];
UIImage *resultUIImage = [[UIImage alloc ]initWithCGImage: cgImage];
image=resultUIImage;
CGImageRelease(cgImage);
cgImage=nil;
SaveImage=image;
[resultUIImage release];
答案 0 :(得分:2)
你没有发布你的CIImage,这很可能是泄漏的来源(Cocoa Memory Semantics要求类方法返回具有+0保留计数的对象,因此它们必须由调用者保留)。与此同时,您正在对图像执行昂贵的过滤。你看,图像可以用几个额外的字节填充,以确保它们的行以第2个字节结束。但是为了加载过滤器,iOS必须取消打开图像,这涉及进入并迭代其字节以删除填充,这需要一段时间。如果它不影响任何性能,你总是可以在后台线程上绘制。我不知道CIImage或UIImage有多安全,但Core Graphics通常是线程安全的。