我正在为 iPhone 开发。我想通过 CGPathCreateMutable() 创建一个可变路径,并且我想从创建它的函数中返回它。我想在完成后调用 CGPathRelease()。但是因为我要归还它,所以我希望自动释放它。由于 Quartz 路径是一个 C 代码(并且看起来不像一个 Objective-C 对象),我不能对其调用自动释放是否正确?
编辑: 对于偶然发现这个问题的其他人,以下建议仅适用于返回核心基础对象的 C 函数。对于返回核心基础对象的 Objective-C 方法,请参阅 Ownership regarding to returned Quartz objects
最佳答案
正确。自动释放池存在于基础层及以上(AppKit/UIKit 等)。它们对于 CoreFoundation/CoreGraphics 对象不存在。
解决此问题的简单方法是重命名您的函数。如果您的函数当前命名为:
CGMutablePathRef myAwesomePath(params...);
然后你应该将它重命名为:
CGMutablePathRef createMyAwesomePath(params...);
这样您就可以安全地按照 Create rule 返回具有 +1 保留计数的对象.
关于objective-c - CGMutablePathRef 的自动释放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2819548/