为什么我会收到带有以下代码的“解析问题 - 预期类型”,我该怎么做才能解决它(不更改我的测试函数的 API)?
// ClassA.h
#define CLASSA_H
#import <Foundation/Foundation.h>
#ifndef CLASSB_H
#import "ClassB.h"
#endif
@interface ClassA : NSObject {}
- (void)test:(ClassB *)input; // Compiler error: Expected ClassB to be a type
@end
和
// ClassB.h
#define CLASSB_H
#import <Foundation/Foundation.h>
#ifndef CLASSA_H
#import "ClassA.h"
#endif
@interface ClassB : NSObject{}
- (void)test:(ClassA *)input; // Compiler error: Expected ClassA to be a type
@end
根据我读到的关于导入与包含的内容,我什至不必使用 CLASSA_H 和 CLASSB_H 宏来防止自包含,但无论我是否使用它们,我都会得到同样的错误。
我的实际代码比上面的示例更复杂,但归结为我有两个接口相互引用的类,因此要求每个标题都包含另一个标题,如上面的示例所示。这是 C 语言中的常见情况,我不明白我在这里缺少什么。