gpt4 book ai didi

iphone - 高效修改CGColor

转载 作者:行者123 更新时间:2023-12-03 20:45:04 25 4
gpt4 key购买 nike

我有一个 iPhone 应用程序,通过将大量 CGColor 分解为组件、对组件进行平均,然后使用新组件创建新颜色,将它们“添加”在一起。当我运行此代码时,Instruments 发现我泄漏了大量 CGColor,并且应用程序运行缓慢。

我觉得如果有一种方法可以解决我正在做的事情而不是每次都使用 CGColorCreate(colorspace, Components) 的话,我就可以解决内存泄漏问题。

这是颜色“添加”的代码

const CGFloat *cs=CGColorGetComponents(drawColor);
const CGFloat *csA=CGColorGetComponents(add->drawColor);
CGFloat r=(cs[0]*w+csA[0]*aW)/1;
CGFloat g=(cs[1]*w+csA[1]*aW)/1;
CGFloat b=(cs[2]*w+csA[2]*aW)/1;
CGFloat components[]={r, g, b, 1.f};
drawColor=CGColorCreate(CGColorSpaceCreateDeviceRGB(), components);

任何帮助都会非常感激,即使帮助是“减少添加颜色的频率”。我确信我不是唯一一个尝试修改 CGColors 的人。

编辑:所以,罗布的评论让我走上了正轨,但我收到了 malloc 双释放错误,因为在分配新的 drawColor 之前多次调用添加颜色的方法。有没有办法在释放之前检查drawColor是否存在?这是新的相关代码。

CGColorSpaceRef colorSpace=CGColorSpaceCreateDeviceRGB();
CGColorRelease(drawColor);
drawColor=CGColorCreate(colorSpace, components);
CGColorSpaceRelease(colorSpace);

最佳答案

很确定你只需要CGColorRelease(drawColor)来防止泄漏。了解这对您的表现有何帮助。

关于iphone - 高效修改CGColor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8920865/

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