Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c CIContext内存泄漏_Objective C_Macos_Cocoa_Memory Leaks - Fatal编程技术网

Objective c CIContext内存泄漏

Objective c CIContext内存泄漏,objective-c,macos,cocoa,memory-leaks,Objective C,Macos,Cocoa,Memory Leaks,参数的CGImageRef和返回的CGImageRef由CGImageRelease释放,但存在内存泄漏 我认为CIContext有问题,但我找不到问题所在 请给我帮助在@autoReleasePool中完成 + (CGImageRef) newFliteredCGImage:(CGImageRef)image withCIFilter:(CIFilter*)filter { CIImage* input_image = [CIImage imageWithCGImage:image];

参数的CGImageRef和返回的CGImageRef由CGImageRelease释放,但存在内存泄漏

我认为CIContext有问题,但我找不到问题所在


请给我帮助

在@autoReleasePool中完成

+ (CGImageRef) newFliteredCGImage:(CGImageRef)image withCIFilter:(CIFilter*)filter {
    CIImage* input_image = [CIImage imageWithCGImage:image];
    NSSize image_size = NSMakeSize(CGImageGetWidth(image),
                                   CGImageGetHeight(image));

    [filter setValue:input_image forKey:kCIInputImageKey];
    CIImage* output_image = [filter valueForKey:kCIOutputImageKey];

    CGColorSpaceRef color_space = CGColorSpaceCreateDeviceRGB();
    CGContextRef bitmap_context
    = CGBitmapContextCreate(nil,
                            image_size.width,
                            image_size.height,
                            8,
                            image_size.width * 4,
                            color_space,
                            (CGBitmapInfo)kCGImageAlphaNoneSkipFirst);
    CGColorSpaceRelease(color_space);

    CIContext* ci_bitmap_context
    = [CIContext contextWithCGContext:bitmap_context
                              options:nil];
    [ci_bitmap_context drawImage:output_image
                          inRect:[output_image extent]
                        fromRect:(CGRect){CGPointZero, image_size}];

    CGImageRef result_img = CGBitmapContextCreateImage(bitmap_context);

    CGContextRelease(bitmap_context);

    return result_img;
}

希望对您有所帮助。

谢谢您的帮助!我的好朋友。
+ (CGImageRef) newFliteredCGImage:(CGImageRef)image withCIFilter:(CIFilter*)filter {

@autoreleasepool {
CIImage* input_image = [CIImage imageWithCGImage:image];
NSSize image_size = NSMakeSize(CGImageGetWidth(image),
                               CGImageGetHeight(image));

[filter setValue:input_image forKey:kCIInputImageKey];
CIImage* output_image = [filter valueForKey:kCIOutputImageKey];

CGColorSpaceRef color_space = CGColorSpaceCreateDeviceRGB();
CGContextRef bitmap_context
= CGBitmapContextCreate(nil,
                        image_size.width,
                        image_size.height,
                        8,
                        image_size.width * 4,
                        color_space,
                        (CGBitmapInfo)kCGImageAlphaNoneSkipFirst);

CIContext* ci_bitmap_context
= [CIContext contextWithCGContext:bitmap_context
                          options:nil];
[ci_bitmap_context drawImage:output_image
                      inRect:[output_image extent]
                    fromRect:(CGRect){CGPointZero, image_size}];

CGImageRef result_img = CGBitmapContextCreateImage(bitmap_context);

return result_img;

}
}