wil*_*lc2 26 iphone cocoa-touch memory-management quartz-graphics
我有一个返回CGMutablePathRef的方法,如下所示:
- (CGMutablePathRef)somePath;
{
CGMutablePathRef theLine = CGPathCreateMutable();
CGPathMoveToPoint(theLine, NULL, 50, 50);
CGPathAddLineToPoint(theLine, NULL, 160, 480);
CGPathAddLineToPoint(theLine, NULL, 270, 50);
return theLine;
}
Run Code Online (Sandbox Code Playgroud)
Xcode/Clang静态分析仪警告说存在潜在的泄漏.文档说要调用CGPathRelease(),但我会把它放在哪里?
如果我在方法返回之前将其放在那里,那么会导致theLine在返回给它的调用者之前消失吗?
ben*_*ado 28
如果方法名称以...开头new,则clang将指望它返回一个保留计数为1的对象.换句话说,将方法重命名somePath为newSomePath将使分析器静音.
如果您确实想要自动释放CGPathRef,则可以将其强制转换为NSObject,然后调用autorelease.我知道这适用于CFTypes,老实说我不确定CGPathRef是否合格.
如何创建一个mutablepath,将它传递给你的构建函数,然后使用并释放它:
CGMutablePathRef mPath = CGPathCreateMutable();
[buildPath:mPath]; //adds reusable lines etc
...do something with it...
CGPathRelease(mPath);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7422 次 |
| 最近记录: |