我在CGPath.h头文件中找到了这个。我很好奇这个警察做了什么?

typedef struct CGPath *CGMutablePathRef;
typedef const struct CGPath *CGPathRef;

我的猜测是:如果我输入def作为const,它是不变的,不能以任何方式改变。这有道理吗?

最佳答案

是的,const意味着您不能在外部更改路径。
不过,对于基于CoreFoundation的库来说,const更像是允许可变对象使用不可变方法而不进行强制转换的技巧,反之亦然。那意味着

CGMutablePathRef mpath;
...
CGPathContainsPoint(mpath, ...);

编译良好,因为aFoo*可以隐式转换为aconst Foo*,但是
CGPathRef path;
...
CGPathAddRect(path, ...);

将引发错误,因为无法安全地将aconst Foo*转换为aFoo*

09-20 10:28