我正在为iphone开发。我想通过CGPathCreateMutable()创建一个可变路径,我想将它从创建它的函数中返回。我想在完成它之后调用CGPathRelease()。但是因为我要回来了,我希望自动释放它。由于Quartz路径是C代码(并且看起来不像是一个客观的C对象),所以我不能在它上面调用autorelease吗?
编辑: 对于偶然发现此问题的其他人,以下建议仅针对返回Core foundation对象的C函数。对于返回Core foundation对象的目标C方法,请参阅Ownership regarding to returned Quartz objects
答案 0 :(得分:5)
正确。自动释放池存在于Foundation层及以上(AppKit / UIKit等)。 CoreFoundation / CoreGraphics对象不存在它们。
解决这个问题的简单方法是重命名您的功能。如果您的函数当前名为:
CGMutablePathRef myAwesomePath(params...);
然后你应该将其重命名为:
CGMutablePathRef createMyAwesomePath(params...);
这样您就可以安全地按照Create rule返回+1保留计数的对象。