1

CGMutablePathRef _mutablePathとして設定したインスタンス変数があります@property (nonatomic) CGMutablePathRef mutablePath;。セッターメソッドをオーバーライドします:

- (void) setMutablePath:(CGMutablePathRef)mutablePath
{
    if (_mutablePath)
    {
        CGPathRelease(_mutablePath);
        _mutablePath = NULL;
    }

    _mutablePath = CGPathRetain(mutablePath);
}

ただし、この行で警告が表示されます。_mutablePath = CGPathRetain(mutablePath);つまり、次のようになります。

Assigning to 'CGMutablePathRef' (aka 'struct CGPath *') from 'CGPathRef' (aka 'const struct CGPath *') discards qualifiers

なぜこれがうまくいかないのでしょうか?これを行うと、CT(コアテキスト)オブジェクトで機能するようです。さまざまなキャストを試しましたが、エラーが解消されません。アドバイスをいただければ幸いです。

4

1 に答える 1

3

CGPathRetain()として宣言されています

CGPathRef CGPathRetain(CGPathRef path);

CGPathRefこれは、ではなく を返すことを意味しますCGMutablePathRefCGMutablePathRef結果をivarに割り当てる前に、結果をキャストする必要があります_mutablePath

于 2012-07-27T21:55:27.753 に答える