未知的类型名称

时间:2012-07-21 17:25:35

标签: objective-c ios xcode cocos2d-iphone

我的.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

1 个答案:

答案 0 :(得分:7)

你有一个循环依赖。 PROBattleAI导入PROBattleScene,它导入PROBattleAI,导入PROBattleScene &lt; zomg无限循环&gt;

尽可能在标头中使用@class PROBattleWhatever。仅导入协议定义或超类的标头。

编辑好的,上面的措辞完全不好......并且误导。这是(我相信)发生的细节。您的PROBattleAI导入PROBattleScene,然后导入PROBattleAI,然后再次导入PROBattleScene(所有这些都在它到达任一文件中的任何代码之前)。这次导入将忽略PROBattleScene,因为它已经被导入,因为文件被跳过,你将得到未定义的类型错误。