-2

我收到这个错误,

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。

我无法弄清楚我错过了什么。

提前感谢您的帮助。

4

2 回答 2

2

您有一个递归导入:“BoxSprite.h”导入“ArrowWrapper.h”,反之亦然。

您必须删除其中一个import语句并@class改用。例如在“BoxSprite.h”中替换

#import "ArrowWrapper.h"

经过

@class ArrowWrapper;

然后,如有必要,您可以在实现文件“BoxSprite.m”中导入“ArrowWrapper.h”。

详细解释: Xcode在“BoxSprite.h”中显示错误,但在“ArrowWrapper.m”编译时实际出现错误:

  1. “ArrowWrapper.m”导入“ArrowWrapper.h”。
  2. “ArrowWrapper.h”在定义ArrowWrapper类之前导入“BoxSprite.h”。
  3. “BoxSprite.h”导入“ArrowWrapper.h”:但是“ArrowWrapper.h”已经被标记为导入,所以编译器不会再读取它。
  4. 因此,在读取“BoxSprite.h”时,ArrowWrapper该类尚未定义,导致编译器错误。

替换import@class解决了问题,因为它使ArrowWrapper编译器知道该类,而无需读取接口文件。

于 2012-09-29T11:15:29.507 回答
0

我认为问题在于导入语句。

您正在#import "ArrowWrapper.h"BoxSprite.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
于 2012-09-29T11:16:44.097 回答