很容易转发声明Objective C类。
@class ClassWhoseHeaderNotYetImported;
但是,此策略不适用于CVImageBufferRef
之类的CoreFoundation类型或继承自CFTypeRef
的任何内容。在目标C中转发声明CoreFoundation类型的正确方法是什么?
答案 0 :(得分:1)
@class
不适用于Core Foundation类型,因为它们不是类,它们是结构,例如如果你看一下CVImageBufferRef
的定义,你会看到:
typedef struct __CVBuffer *CVBufferRef;
...
typedef CVBufferRef CVImageBufferRef;
因此,为了向前声明CF类型,您需要知道底层结构是什么。您可以使用⌘-click轻松地在Xcode中查找它。如果有多个级别,就像这里一样,您不需要声明所有级别(除非您需要使用中间体)。以下应该有效
typedef struct __CVBuffer *CVImageBufferRef;
如果您真的无法查找类型,那么您可能可以使用void *
。它在技术上并不安全,但在iOS或OSX上永远不会失败,除非Apple认真对待它。