我是否需要在ARC下发布CGColorSpaceRef?

问题描述 投票:7回答:3

假设我有这段代码:

CGColorSpaceRef colorSpaceRGB = CGColorSpaceCreateDeviceRGB();

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

之后我做了一些绘画。当我完成后,如果我使用ARC,是否需要手动释放colorSpaceRGB?像这样:

CGColorSpaceRelease(colorSpaceRGB);

或者我不需要做任何事情?

谢谢 :)

ios core-graphics automatic-ref-counting
3个回答
11
投票

是。根据Apple的文档:因为CGColorSpaceRelease函数相当于CFRelease,但如果cs参数为NULL则不会导致错误。如果您创建,复制或显式保留Core Foundation对象,则您有责任在不再需要时释放它(请参阅Core Foundation的Memory Management编程指南)。


5
投票

Swift 4.0的更新:

在当前版本的Swift中不再需要它。

CGColorSpaceRelease(colorSpace)

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

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


3
投票

是的,我相信,即使在ARC下。

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

© www.soinside.com 2019 - 2024. All rights reserved.