在ARC下,我需要释放CGColorSpaceRef吗?

7

假设我有以下这段代码:

CGColorSpaceRef colorSpaceRGB = CGColorSpaceCreateDeviceRGB();

CGContextSetStrokeColorSpace(context, colorSpaceRGB);
CGContextSetFillColorSpace(context, colorSpaceRGB);

完成绘制后,如果使用ARC,我需要手动释放colorSpaceRGB吗?类似这样:

CGColorSpaceRelease(colorSpaceRGB);

或者我不需要做任何事吗?
谢谢 :)

这个答案很好地解释了为什么和何时需要释放任何对象。请查看:https://dev59.com/RFXTa4cB1Zd3GeqPyh0n#21967681 - Pooja Shah
3个回答

11

是的。根据苹果的文档:因为CGColorSpaceRelease函数相当于CFRelease,除了如果cs参数为空时不会引起错误。 如果您创建、复制或显式保留Core Foundation对象,则在不再需要它时应负责释放它(请参阅Core Foundation内存管理编程指南)。


顺便提一下,在Swift中这不是必需的(也不可能)。 - bio

10

更新至Swift 4.0:

在当前版本的Swift中,这不再是必需的。

CGColorSpaceRelease(colorSpace)

这行代码现在会给出以下信息:

'CGColorSpaceRelease' 不可用:Core Foundation对象自动进行内存管理。


3

是的,即使在ARC下也是如此。

根据CGColorSpace文档,您需要调用CGColorSpaceRelease


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接