1

メソッドから戻るときに、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 を問題なく渡すことができるようにしたいと考えています。これはどのように達成できますか?

4

1 に答える 1

0

私がやろうとしていることは不可能であるように思われるので、initWithMutablePath (これは基本クラスのコンストラクターでした) を取り除くだけで、基本クラスにコンストラクターを実装しなくなりました。それを継承する子クラスにイニシャライザを実装させ、パスをロードします。

于 2012-09-18T07:23:51.913 に答える