2

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

1 回答 1

7

你有一个循环依赖。PROBattleAI 进口 PROBattleScene 进口 PROBattleAI 进口 PROBattleScene<zomg无限循环>

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

编辑好的,上面的措辞完全不好……而且具有误导性。这是(我相信)发生的详细情况。您的 PROBattleAI 导入 PROBattleScene,然后导入 PROBattleAI,然后再导入 PROBattleScene(在它到达任一文件中的任何代码之前)。这次导入将忽略 PROBattleScene,因为它已经被导入,并且由于文件被跳过,您将收到未定义的类型错误。

于 2012-07-21T17:45:58.557 回答