Objective-C 交叉引用问题的解决方案


objective-c 不允许交叉引用,上代码:

A.h

  1. #import <Foundation/Foundation.h>   
  2. #import "B.h"   
  3.   
  4. @interface A : NSObject {  
  5.     B* _b; // 报错点 1~   
  6. }  
  7.   
  8. -(void) test:(B*)b; // 报错点 2~   
  9.   
  10. @end  
A.mm
  1. #import "A.h"   
  2.   
  3. @implementation A  
  4.   
  5. -(void) test:(B*)b {  
  6.     NSLog(@"test");  
  7. }  
  8.   
  9. @end  
B.h
  1. #import <Foundation/Foundation.h>   
  2. #import "A.h"   
  3.   
  4. @interface B : NSObject {  
  5.     A* _a; // 报错点 3~   
  6. }  
  7.   
  8. @end  
B.mm
  1. #import "B.h"   
  2.   
  3. @implementation B  
  4.   
  5. @end  

解决方案:

头文件中不要包含彼此的头文件,将成员变量类型、方法参数类型改为由具体的类名 (A*,B*)  改为 id

.mm 实现文件中包含彼此的头文件不会出错,that's all!

相关内容