1
我從一個方法返回時,用CoreGraphics管理內存似乎總是有很多麻煩。採取下面的情況:我想initWithMutablePathCoreGraphics,內存釋放,返回值
Potential leak of an object allocated on line 38 and stored into 'mutablePath'
:
- (id) init
{
CGMutablePathRef mutablePath = CGPathCreateMutable();
//mutable path gets loaded with some hard data
return [self initWithMutablePath:mutablePath];
}
- (id) initWithMutablePath:(CGMutablePathRef)mutablePath
{
self = [super init];
if (self)
{
_mutablePath = (CGMutablePathRef) CGPathRetain(mutablePath);
}
return self;
}
是從儀器得到這個消息(CGMutablePathRef)mutablePath初始化保留mutablePath,因爲它可能會從其他地方在那裏被稱爲這將是必要的。然而,我也希望init方法能夠毫無例外地將mutablePath傳遞給它。這如何實現?
CGPathRetain可能是原因.. CGPathCreateMutable爲您提供了保留狀態,爲什麼再次使用CGPathRetain? –
@LithuThiruvathira - 是的,我認爲是的,但是這個初始值還需要從別的地方調用,所以我需要保持這種方式。 –
make CGMutablePathRef mutablePath = CGPathCreateMutable();在if循環if(mutablepath)中加入 ,然後將其添加到initWithMutablePath:方法中,從init方法中刪除tht –