我的.h文件:
#import <Foundation/Foundation.h>
#import "cocos2d.h"
#import "GameData.h"
#import "PROBattleScene.h"
@interface PROBattleAI : NSObject {
BattleType type;
PROBattleScene *scene;
}
-(id)initWithType:(BattleType)_type andBattleInformation:(NSMutableDictionary*)_information andScene:(PROBattleScene*)_scene;
-(void)dealloc;
@end
但是在PROBattleScene *scene;
行上,我从Xcode获得了未知类型名称错误。
我在这里尝试了答案:xcode unknown type name但我已经这样做了(并且不起作用)。
为什么会这样?我已经导入了我的PROBattleScene.h
文件,为什么不被识别?
编辑:根据要求提供PROBattleScene.h
的内容:
#import <Foundation/Foundation.h>
#import "cocos2d.h"
#import "GameData.h"
#import "SimpleAudioEngine.h"
#import "PROBattleBackground.h"
#import "PROBattleAI.h"
@interface PROBattleScene : CCLayer {
NSMutableDictionary *battleInformation;
NSMutableArray *localPlayerPartyData;
PROBattleBackground *background;
CCNode *base;
PROBattleAI *enemyAI;
}
+(CCScene*)scene;
-(id)init;
-(void)loadBattleInformation;
-(void)loadBGM;
-(void)loadBackground;
-(void)loadBase;
-(void)loadEnemyAI;
-(void)beginBattle;
@end
答案 0 :(得分:7)
你有一个循环依赖。 PROBattleAI导入PROBattleScene,它导入PROBattleAI,导入PROBattleScene &lt; zomg无限循环&gt;
尽可能在标头中使用@class PROBattleWhatever
。仅导入协议定义或超类的标头。
编辑好的,上面的措辞完全不好......并且误导。这是(我相信)发生的细节。您的PROBattleAI导入PROBattleScene,然后导入PROBattleAI,然后再次导入PROBattleScene(所有这些都在它到达任一文件中的任何代码之前)。这次导入将忽略PROBattleScene,因为它已经被导入,因为文件被跳过,你将得到未定义的类型错误。