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!