我有一个实例变量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(核心文本)对象。我尝试了很多不同的转换,但是无法消除错误,我们将不胜感激。

最佳答案

CGPathRetain()声明为

CGPathRef CGPathRetain(CGPathRef path);

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

关于iphone - 保留CGPath对象时遇到麻烦(出现警告),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11696107/

10-09 01:48