objective-c 不允许交叉引用,上代码:
A.h
#import <Foundation/Foundation.h>
#import "B.h"
@interface A : NSObject {
B* _b; // 报错点 1~
}
-(void) test:(B*)b; // 报错点 2~
@end
A.mm
#import "A.h"
@implementation A
-(void) test:(B*)b {
NSLog(@"test");
}
@end
B.h
#import <Foundation/Foundation.h>
#import "A.h"
@interface B : NSObject {
A* _a; // 报错点 3~
}
@end
B.mm
#import "B.h"
@implementation B
@end
头文件中不要包含彼此的头文件,将成员变量类型、方法参数类型改为由具体的类名 (A*,B*) 改为 id
.mm 实现文件中包含彼此的头文件不会出错,that's all!
本文讨论了Objective-C编程中不允许交叉引用的问题,并提供了将成员变量类型和方法参数类型从指针类型修改为对象类型(id)的解决方案,确保头文件间不互相包含头文件,从而避免编译错误。
270

被折叠的 条评论
为什么被折叠?



