我一直在寻找,但是如果在使用ARC(+ iOS6)时需要释放Core Graphic原语(CGMutablePathRef,CGPath,渐变等),我一直没有找到明确的答案。
我已经看到了这个问题(silence a compiler warning about releasing a CGMutablePathRef object)以及其他一些问题,但它们已经过时或者不完全清楚(至少对我来说)。
答案 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。