メソッドから戻るときに、CoreGraphics を使用してメモリを管理する際に、常に多くの問題を抱えているようです。以下の状況を考えてみましょう。
- (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;
}
インストゥルメントから次のメッセージが表示されます。
Potential leak of an object allocated on line 38 and stored into 'mutablePath'
initWithMutablePath:(CGMutablePathRef)mutablePath イニシャライザが必要な場所から呼び出される可能性があるため、mutablePath を保持する必要があります。それでも、init メソッドに mutablePath を問題なく渡すことができるようにしたいと考えています。これはどのように達成できますか?