gpt4 book ai didi

objective-c - 结构体的 @class 等效声明

转载 作者:行者123 更新时间:2023-12-02 04:32:49 27 4
gpt4 key购买 nike

我想避免在 header 中导入 AVFoundation 框架,但我需要声明 CMTime

对于 NSObject 我可以执行 @class AVPlayer; 并导入 .m 文件中的所有内容。如何使用像 CMTime 这样的结构来做到这一点?

最佳答案

如果需要引用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 的变量- 不带星号的类型。

关于objective-c - 结构体的 @class 等效声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22638821/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com