- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个方法返回由 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所说的那样直接。此外,UIColor
和 CGColorRef
是不是免工具桥接的 - 为什么转换器会起作用?然而(虽然我不推荐它——使用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/
我正在尝试在 SpriteKit 中创建渐变纹理。 为此,我必须使用 CAGradientLayer 并渲染图像。我的问题是设置颜色。 来自 Apple 的文档: An array of CGColo
我的代码发生了一次崩溃,我一直追踪到当传递 2 个 CGColorRef 时发生崩溃的行。以下是对象: CGColorRef startColor = [[UIColor colorWithWhite
我有一个方法返回由 CGColorCreate 方法创建的 CGColorRef 实例。我需要自动释放此方法返回的颜色。有谁知道如何做到这一点? //red,green,blue are from 0
我有 ARC启用,我正在尝试做: CGColorRef outerColor = (id)[UIColor colorWithWhite:1.0 alpha:1.0].CGColor; 我尝试的 Ac
我希望通过这项研究了解 CoreFoundation 对象的内部结构。 下面给出 free quartz project. 中 CGColor 的结构 typedef struct CGColor {
我想知道如何将 CGcolorRef 转换为 UIColor ?我为自己创建了一个自定义方法,我需要它来使用 UIColor 编辑方法: - (void)fontColor:(CGColorR
在处理 CG 元素时,我有时会感到困惑,并遇到以下看似简单但给我带来麻烦的场景。 我有一个 CGColorRef属性名为 fillColor ,我手动定义 setter 方法如下: @property
我有一个用于我在我的应用程序中使用的阴影 TableView 的类。 在转换为 ARC 时,我不得不改变一些东西。对于新类,它在以下几行崩溃:(id)(inverse ? darkColor : li
我正在使用 Opacity 生成所有 Quartz2D 图稿,现在我正在解决通过 KVC/KVO 更改颜色的问题。 Opacity 将其所有颜色变量定义为 @dynamic 并实现其自己的访问器作为类
我有一个 UIColor 定义如下: #define kCircleInnerShadowColor [UIColor colorWithWhite:.78 alpha:1.0] 然后我这样使用它:
我收到此错误: my color = CGColorCreate(colorSpace, fillComponents); variable: incompatible pointer types p
我是一名优秀的程序员,十分优秀!