gpt4 book ai didi

iphone - 如何自动释放 CGColorRef

转载 作者:太空狗 更新时间:2023-10-30 03:46:57 26 4
gpt4 key购买 nike

我有一个方法返回由 CGColorCreate 方法创建的 CGColorRef 实例。我需要自动释放此方法返回的颜色。有谁知道如何做到这一点?

//red,green,blue are from 0-255 range

+(CGColorRef) getColorFromRed:(int)red Green:(int)green Blue:(int)blue Alpha:(int)alpha
{
CGFloat r = (CGFloat) red/255.0;
CGFloat g = (CGFloat) green/255.0;
CGFloat b = (CGFloat) blue/255.0;
CGFloat a = (CGFloat) alpha/255.0;
CGFloat components[4] = {r,g,b,a};
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGColorRef color = CGColorCreate(colorSpace, components);
CGColorSpaceRelease(colorSpace);

//CGColorRelease(color);
// I need to auto release the color before returning from this.

return color;
}

最佳答案

你不能像mvds所说的那样直接。此外,UIColorCGColorRef不是免工具桥接的 - 为什么转换器会起作用?然而(虽然我不推荐它——使用UIColor代替!)有一个技巧可以做到这一点:

创建一个autoreleased UIColor 对象并返回它的CGColor。像这样:

return [UIColor colorWith... ].CGColor;

这将返回绑定(bind)到它的 UIColor 的常规 CGColorRef 对象。这意味着如果 UIColor 在自动释放循环中被释放,它的 CGColorRef 也将被释放——除非它被保留在其他地方使用 CGRetain( ...),如果你的方法的调用者想要保持颜色,它应该这样做。因此 CGColorRef 是伪自动发布的...

仍然:我建议这样做。直接使用UIColor!

关于iphone - 如何自动释放 CGColorRef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3501428/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com