我想避免在标题中导入AVFoundation
框架,但我需要声明CMTime
。
对于NSObject
,我可以执行@class AVPlayer;
并导入.m文件中的所有内容。如何使用像CMTime
?
答案 0 :(得分:5)
如果你需要在标题中引用CMTime
结构,你需要包括<CMTime.h>
:正向声明一个struct
允许你在指针声明中使用类型的名称,但不是该结构类型成员的声明。
换句话说,你可以这样做:
struct CMTime; // Forward declaration of the struct
@interface MyInterface : NSObject
-(void)fillCmTime:(CMTime*)buffer;
@end
但你不能这样做:
struct CMTime; // Forward declaration of the struct
@interface MyInterface : NSObject {
// This is not allowed
CMTime time;
}
// This is not allowed either
-(CMTime)getTime;
@end
您可以执行@class AVPlayer
然后在成员声明中使用它的原因是Objective-C类(id
- 类型)被实现为指针。实际上,如果没有星号,则无法声明id
- 类型的变量。