Core Graphics 不透明类型,它们是什么以及如何使用?

Core Graphics Opaque type, what are they and how?

我正在学习 Core Graphics,尤其是 CGContextRef。我的问题是关于不透明数据类型的语法和实现细节(如果它们是已知的)。我知道 CGContextRef 等不透明类型是对内存中某些底层结构的引用(指针?),并且它是不透明的,因为该结构的细节对开发人员是隐藏的。

因此,如果我有一个这样声明的变量:CGContextRef context = UIGraphicsGetCurrentContext(); 为什么上下文前面不需要“*”来表示这是一个引用 type/pointer?这种句法奇点的语义意义是什么?

按住 Command 并单击符号 CGContextRef 可跳转到其在 CGContext.h 中的定义,您会明白原因:

typedef struct CGContext *CGContextRef;

您不必在 context 变量之前放置 *,因为 *CGContextRef 类型定义的一部分。