保留CGPath对象时出现问题(出现警告)

时间:2012-07-27 21:50:26

标签: iphone ios cocoa-touch core-graphics

我有一个实例变量CGMutablePathRef _mutablePath,我将其设置为@property (nonatomic) CGMutablePathRef mutablePath;。我重写了setter方法:

- (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(核心文本)对象。我已经尝试了一堆不同的演员,但是不能让错误消失,任何建议都会受到赞赏。

1 个答案:

答案 0 :(得分:3)

CGPathRetain()被声明为

CGPathRef CGPathRetain(CGPathRef path);

这意味着它会返回CGPathRef而不是CGMutablePathRef。您应该将结果转发回CGMutablePathRef,然后再将其分配到_mutablePath ivar。