【问题标题】:What's going on with "expected specifier-qualifier-list" error“预期的说明符限定符列表”错误是怎么回事
【发布时间】:2010-04-11 07:41:04
【问题描述】:

这是我的 GameEngine.h:

#import <Foundation/Foundation.h>
#import "GameArray.h";


@interface GameEngine : NSObject {
    GameArray *gameButtonsArray;
}

@property (nonatomic, retain) GameArray *gameButtonsArray;

这是我的 GameArray.h:

#import <Foundation/Foundation.h>
#import "MyAppDelegate.h";

@interface GameArray : NSObject {
    NSMutableArray *gameButtonsArray;

}
@property (nonatomic, retain) NSMutableArray *gameButtonsArray;

它在我的 GameEngine.h 中不断提示我的“预期的说明符限定符列表”错误,并且错误说“'GameArray'之前的预期说明符限定符列表”,这是怎么回事?

【问题讨论】:

  • 我把GameArray.h中的“gameButtonsArray”改成myGameButtonsArray,也提示这个错误。

标签: objective-c debugging iphone-sdk-3.0


【解决方案1】:

这是最佳做法。

GameEngine.h

#import <Foundation/Foundation.h>

@class GameArray;

@interface GameEngine : NSObject {
    GameArray *gameButtonsArray;
}

@property (nonatomic, retain) GameArray *gameButtonsArray;

然后在 GameEngine.m 中

#import "GameEngine.h"
#import "GameArray.h"

@implementation GameEngine    
//...
@end

这可以防止循环引用,其中一个标头导入第二个标头,该第二个标头导入第一个标头,该标头导入第二个标头,依此类推。

【讨论】:

    【解决方案2】:

    在您的.h 文件中丢失第 2 行的分号

    【讨论】:

    • 刚刚添加,还是有问题。
    • 我看到您已经编辑了问题并在两个 .h 文件的第 2 行添加了分号。你需要删除它们。
    【解决方案3】:

    如果删除不必要的分号不能解决您的问题,很可能 MyAppDelegate.h 导入 GameEngine.hGameEngine.h 和 GameArray.h。尝试从 GameEngine.h 中删除 #import "GameArray.h" 并将其替换为:

    @class GameArray;
    

    同时添加

    #import "GameArray.h"
    

    GameEngine.m下面导入GameEngine.h

    【讨论】:

      猜你喜欢
      • 2011-09-25
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 2010-10-11
      • 2011-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多