如何转发声明CoreFoundation类型?

时间:2013-11-01 03:58:54

标签: ios objective-c forward-declaration core-foundation

很容易转发声明Objective C类。

@class ClassWhoseHeaderNotYetImported;

但是,此策略不适用于CVImageBufferRef之类的CoreFoundation类型或继承自CFTypeRef的任何内容。在目标C中转发声明CoreFoundation类型的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

@class不适用于Core Foundation类型,因为它们不是类,它们是结构,例如如果你看一下CVImageBufferRef的定义,你会看到:

typedef struct __CVBuffer *CVBufferRef;
...
typedef CVBufferRef CVImageBufferRef;

因此,为了向前声明CF类型,您需要知道底层结构是什么。您可以使用⌘-click轻松地在Xcode中查找它。如果有多个级别,就像这里一样,您不需要声明所有级别(除非您需要使用中间体)。以下应该有效

typedef struct __CVBuffer *CVImageBufferRef;

如果您真的无法查找类型,那么您可能可以使用void *。它在技术上并不安全,但在iOS或OSX上永远不会失败,除非Apple认真对待它。