我收到了这个错误,
Unknown type name ArrowWrapper
来自BoxSprite.h
#import <Foundation/Foundation.h>
#import "cocos2d.h"
#import "BoxSum.h"
#import "ArrowWrapper.h"
@interface BoxSprite : CCSprite {
}
@property ArrowWrapper* arrowItem;
@end
此外,ArrowWrapper.h
包含此内容。
#import "cocos2d.h"
#import "BoxSprite.h"
@interface ArrowWrapper : CCMenuItem {
}
@property BoxSprite* box;
@end
错误曾经在ArrowWrapper中说它无法找到BoxSprite直到我干净了,现在它在BoxSprite中说它无法找到ArrowWrapper。
我无法弄清楚我错过了什么。
提前感谢您的帮助。
答案 0 :(得分:2)
你有一个递归导入:“BoxSprite.h”导入“ArrowWrapper.h”,反之亦然。
您必须删除其中一个import
语句,然后使用@class
。例如在“BoxSprite.h”中替换
#import "ArrowWrapper.h"
通过
@class ArrowWrapper;
如果需要,您可以在实施文件“BoxSprite.m”中导入“ArrowWrapper.h”。
详细解释: Xcode在“BoxSprite.h”中显示错误,但编译“ArrowWrapper.m”时实际发生错误:
ArrowWrapper
类之前导入“BoxSprite.h”。ArrowWrapper
类,导致编译错误。 import
替换@class
解决了这个问题,因为它在不读取接口文件的情况下使编译器知道ArrowWrapper
类。
答案 1 :(得分:0)
我认为问题在于导入声明。
您正在BoxSprite.h中导入#import "ArrowWrapper.h"
并导入#import "BoxSprite.h"
中的ArrowWrapper.h
所以改变BoxSprite.h就像:
#import <Foundation/Foundation.h>
#import "cocos2d.h"
#import "BoxSum.h"
@class ArrowWrapper;
@interface BoxSprite : CCSprite {
}
@property ArrowWrapper* arrowItem;
@end