Я нахожусь в процессе преобразования моего проекта в использование 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