В процессе преобразования проекта я использую 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] небезопасно передавать в 'CGColorRef' результат сообщение "autorelease"; листинг __bridge может привести к указателю на уничтоженный объект, а __bridge_retained может пропустить объект