Потенциальная утечка объекта - Xcode - ios5 - PullRequest
1 голос
/ 23 декабря 2011

Я использую ios 5 с поддержкой ARc. поэтому в следующем примере я получаю предупреждение об утечке памяти ... но так как с помощью ARC я не могу использовать autorelease. Любое предложение, пожалуйста, кто-нибудь?

  -(void)coreImageEffect{
    CIImage *inputImage = [[CIImage alloc] initWithImage:blurImage.image];
    CIFilter *hueAdjust = [CIFilter filterWithName:@"CIHueAdjust"];

    [hueAdjust setDefaults];
    [hueAdjust setValue:inputImage forKey:@"inputImage"];
    [hueAdjust setValue:[NSNumber numberWithFloat: 3.4f]
    forKey:@"inputAngle"];

    CIImage *outputImage = [hueAdjust valueForKey:@"outputImage"];
    CIContext *context = [CIContext contextWithOptions:nil];

    blurImage.image = [UIImage imageWithCGImage:
    [context createCGImage:outputImage
    fromRect:outputImage.extent]];

    }

Я не могу использовать [CIContext Autorelease]; проблема в том, что CIContext показывает, что «метод возвращает базовый базовый объект с счетом сохранения +1»

Пожалуйста, предложите.

1 Ответ

11 голосов
/ 23 декабря 2011

-createCGImage:… возвращает объект Core Graphics, который не является объектом Objective-C и не будет управляться ARC. Таким образом, вы должны CGImageRelease это вручную:

CGImageRef cgImage = [context createCGImage:outputImage
                                   fromRect:outputImage.extent];
blurImage.image = [UIImage imageWithCGImage:cgImage];
CGImageRelease(cgImage);

но почему бы не использовать +imageWithCIImage: напрямую?

blurImage.image = [UIImage imageWithCIImage:outputImage];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...