我有一个实例变量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(核心文本)对象。我已经尝试了一堆不同的演员,但是不能让错误消失,任何建议都会受到赞赏。
答案 0 :(得分:3)
CGPathRetain()
被声明为
CGPathRef CGPathRetain(CGPathRef path);
这意味着它会返回CGPathRef
而不是CGMutablePathRef
。您应该将结果转发回CGMutablePathRef
,然后再将其分配到_mutablePath
ivar。