Преобразование метода, который возвращает автоматически выпущенный CGColor в ARC

Я нахожусь в процессе преобразования моего проекта в использование ARC. У меня есть категория в NSColor с методом, который возвращает автоматически выпущенное представление CGColor :

@implementation NSColor (MyCategory)

- (CGColorRef)CGColor
{
    NSColor *colorRGB = [self colorUsingColorSpaceName:NSCalibratedRGBColorSpace];
    CGFloat components[4];
    [colorRGB getRed:&components[0]
               green:&components[1]
                blue:&components[2]
               alpha:&components[3]];
    CGColorSpaceRef space = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);
    CGColorRef theColor = CGColorCreate(space, components);
    CGColorSpaceRelease(space);
    return (CGColorRef)[(id)theColor autorelease];
}

@end

. Как правильно это сделать с помощью ARC? Я не хочу возвращать сохраненный CGColor.

Преобразователь ARC в XCode предлагает использовать

return (CGColorRef)[(__bridge id)theColor autorelease];

но это приводит к следующему сообщению об ошибке:

[rewriter] it is not safe to cast to 'CGColorRef' the result of 'autorelease' message; a __bridge cast may result in a pointer to a destroyed object and a __bridge_retained may leak the object

11
задан DrummerB 24 July 2012 в 17:43
поделиться