自动释放CGMutablePathRef?

hug*_*gie 3 objective-c quartz-graphics

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

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

Dav*_*ong 5

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

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

CGMutablePathRef myAwesomePath(params...);
Run Code Online (Sandbox Code Playgroud)

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

CGMutablePathRef createMyAwesomePath(params...);
Run Code Online (Sandbox Code Playgroud)

这样您就可以按照创建规则返回具有+1保留计数的对象.