1

滤镜效果显示一些警告 执行代价高昂的取消填充操作!应用于图像后还有一些内存泄漏?

我的代码是:-

        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];
4

1 回答 1

2

您没有发布 CIImage,这很可能是泄漏的来源(Cocoa 内存语义要求类方法返回具有 +0 保留计数的对象,因此它们必须由调用者保留)。同时,您正在对图像执行昂贵的过滤。你看,图像可能会被填充几个额外的字节,以确保它们的行以第 2^n 个字节结束。但为了加载过滤器,iOS 必须取消填充图像,这涉及进入并遍历其字节以删除填充,这需要一段时间。如果它不影响任何性能方面的事情,您总是可以在后台线程上绘制。我不知道 CIImage 或 UIImage 有多安全,但 Core Graphics 通常是线程安全的。

于 2012-05-30T06:32:05.387 回答