如何减少CFData(存储)?

Tak*_*ara 6 memory iphone memory-leaks uiimage cfdata

我一直在寻找解决方案来解决下面的问题,但找不到.我做了过滤方法来修改HSVUIImage.这种方法工作正常,但是当我使用这种方法时,使用的内存会长大,无法释放.在Instruments的"Live Bytes"框中,我发现CFData(store)的值为每次过滤增加了几MB.我怎么才能释放他们?我发现了类似的问题,但对这个问题不太好.谢谢.

//Objective-C
- (UIImage*)addFilter:(UIImage*)img{
    CGImageRef imgRef = img.CGImage;

    //getting size
    size_t width = CGImageGetWidth(imgRef);
    size_t height = CGImageGetHeight(imgRef);
    size_t bitsPerComponent = CGImageGetBitsPerComponent(imgRef);
    size_t bitsPerPixel = CGImageGetBitsPerPixel(imgRef);
    size_t bytesPerRow = CGImageGetBytesPerRow(imgRef);


    CGColorSpaceRef colorSpace = CGImageGetColorSpace(imgRef);
    CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(imgRef);
    bool shouldInterpolate = CGImageGetShouldInterpolate(imgRef);
    CGColorRenderingIntent renderingIntent = CGImageGetRenderingIntent(imgRef);
    CGDataProviderRef dataProvider = CGImageGetDataProvider(imgRef);
    CFMutableDataRef *data = CGDataProviderCopyData(dataProvider);
    UInt8 *buf = (UInt8 *)CFDataGetMutableBytePtr(data);


    double h,s,v;
    double c;
    double cmax,cmin;
    for (int j = 0; j < height; j++) {
        for (int i = 0; i < width; i++) {

        /////////////////////
        ///change HSV value//
        /////////////////////

        }
    }

    CFDataRef  filterData = CFDataCreate(NULL, buf, CFDataGetLength(data));
    CGDataProviderRef filterDataProvider = CGDataProviderCreateWithCFData(filterData);
    CGImageRef filterCgImage = CGImageCreate(
                                             width,
                                             height,
                                             bitsPerComponent,
                                             bitsPerPixel,
                                             bytesPerRow,
                                             colorSpace,
                                             bitmapInfo,
                                             filterDataProvider,
                                             NULL,
                                             shouldInterpolate,
                                             renderingIntent
                                             );

    UIImage *imgFinal =  [UIImage imageWithCGImage:filterCgImage];

    CFRelease(filterData);
    CGImageRelease(filterCgImage);
    CGDataProviderRelease(filterDataProvider);
    CFRelease(data);

    return imgFinal;

}
Run Code Online (Sandbox Code Playgroud)