自动释放CGMutablePathRef?

时间:2010-05-12 14:09:43

标签: objective-c quartz-graphics

我正在为iphone开发。我想通过CGPathCreateMutable()创建一个可变路径,我想将它从创建它的函数中返回。我想在完成它之后调用CGPathRelease()。但是因为我要回来了,我希望自动释放它。由于Quartz路径是C代码(并且看起来不像是一个客观的C对象),所以我不能在它上面调用autorelease吗?

编辑: 对于偶然发现此问题的其他人,以下建议仅针对返回Core foundation对象的C函数。对于返回Core foundation对象的目标C方法,请参阅Ownership regarding to returned Quartz objects

1 个答案:

答案 0 :(得分:5)

正确。自动释放池存在于Foundation层及以上(AppKit / UIKit等)。 CoreFoundation / CoreGraphics对象不存在它们。

解决这个问题的简单方法是重命名您的功能。如果您的函数当前名为:

CGMutablePathRef myAwesomePath(params...);

然后你应该将其重命名为:

CGMutablePathRef createMyAwesomePath(params...);

这样您就可以安全地按照Create rule返回+1保留计数的对象。