我有一个实例变量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/