我在CGPath.h头文件中找到了这个。我很好奇这个警察做了什么?
typedef struct CGPath *CGMutablePathRef;
typedef const struct CGPath *CGPathRef;
我的猜测是:如果我输入def作为const,它是不变的,不能以任何方式改变。这有道理吗?
最佳答案
是的,const
意味着您不能在外部更改路径。
不过,对于基于CoreFoundation的库来说,const
更像是允许可变对象使用不可变方法而不进行强制转换的技巧,反之亦然。那意味着
CGMutablePathRef mpath;
...
CGPathContainsPoint(mpath, ...);
编译良好,因为a
Foo*
可以隐式转换为aconst Foo*
,但是CGPathRef path;
...
CGPathAddRect(path, ...);
将引发错误,因为无法安全地将a
const Foo*
转换为aFoo*
。