使用ARC,需要发布CGMutablePathRef吗?

时间:2013-03-06 18:05:22

标签: ios core-graphics automatic-ref-counting

我一直在寻找,但是如果在使用ARC(+ iOS6)时需要释放Core Graphic原语(CGMutablePathRef,CGPath,渐变等),我一直没有找到明确的答案。

我已经看到了这个问题(silence a compiler warning about releasing a CGMutablePathRef object)以及其他一些问题,但它们已经过时或者不完全清楚(至少对我来说)。

1 个答案:

答案 0 :(得分:3)

粗略地说,只有NSObject个实例通过ARC处理。 ARC是一种编译器机制,可在需要时为您添加release / retain。因此,它仅适用于您在非ARC案例中使用release / retain的情况。

这不包括通过malloc分配的内存,也不包括低级框架(核心图形,核心音频等)。具体而言,需要通过使用特定方法(例如CGImageRelease等)释放通过低级框架分配的对象。

编辑:

Core Foundation数据类型的一个非常具体的例子是免费桥接类型。在ARC之前的世界中,您可以安全地指定CF数据类型,其中预期其对应的Objective-C类(例如,CFString代替NSString)。 ARC禁止这样做,因为所有权语义不明确。因此,可以使用一组ARC指令来指定所有权信息(有关详细信息,请参阅this),但CGPath不是这种情况,而不是免费桥接(因为它是未在CGPath Reference中说明。

顺便说一下,所有ARC怀疑的重要资源是this rich post of Mike Ash's