@class GSValue;
@interface GSValue : NSObject // Help the compiler
@end
@class GSNonretainedObjectValue;
@interface GSNonretainedObjectValue : NSObject // Help the compiler
@end
来自NSValue.m的上述代码。我谷歌并给我一些信息,它表明@class(不附带@interface)用于两个类之间的类前向声明,但只声明为类的指针。我的问题是为什么" @class GSValue;"紧接着是" @interface GSValue:NSObject",这是什么意思?
答案 0 :(得分:0)
我不太确定,但我认为在这种情况下它是前向声明+声明,GSValue
和其他类是NSObject
的子类。因此,编写[GSValue class]
时编译器不会发出警告。它实际上并不是“帮助”,只是为了摆脱警告。
但是,如果是这种情况,那么我不知道为什么他们使用@interface
的前向声明,因为它在没有@class
指令的情况下工作正常。
我是这样看的。
他们首先使用了前瞻性声明。然后他们注意到编译器发出警告Receiver 'GSValue' is a forward class and corresponding @interface may not exist
,因此他们添加了@interface
个部分,但忘记了或者没有删除以前的@class
指令。