2012-06-24 41 views
6

比方说,我有这样的一段代码:我需要在ARC下发布CGColorSpaceRef吗?

CGColorSpaceRef colorSpaceRGB = CGColorSpaceCreateDeviceRGB(); 

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

后,我做了一些拉伸。当我完成后,如果我使用ARC,我需要手动发布colorSpaceRGB吗?像这样:

CGColorSpaceRelease(colorSpaceRGB); 

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

谢谢:)

+0

这个答案很好地解释了为何以及何时需要释放任何对象。请检查:http://stackoverflow.com/a/21967681/2849443 –

回答

10

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

0

更新雨燕4.0:

这不再需要在斯威夫特的当前版本。

CGColorSpaceRelease(colorSpace) 

这行代码现在提供了以下消息:

“CGColorSpaceRelease”是不可用:核心基础对象是自动存储管理