2

我有以下代码:

@implementation GameScene {

 -(id)init {
self = [super init]
if (self != nil) {

    BackgroundLayer *backgroundLayer = [BackgroundLayer node];
    [self addChild:backgroundLayer z:0];

    GameplayLayer *gameplayLayer = [GameplayLayer node];
    [self addChild:gameplayLayer z:5];
}
return self;
 }

 @end

我以前做过这样的事情,但是自从我更新 xCode 以来,我一直收到以下错误消息,所有消息都固定在 -(id) 行。

类型名称需要说明符或限定符

预期的成员名称或“;” 在声明说明符之后

预期的 ';' 在声明列表的末尾

我不知道从这里做什么,似乎无法解决这些问题!

4

3 回答 3

6

@implementation除非你在一个块中定义额外的变量,否则你不应该有一个左大括号,如下所示:

@implementation GameScene {
    int _variable;
}
- (id)init {
    ...
}
...
@end

类方法(init 等)不应包含在大括号中,因此对编译器错误的修复是简单地删除左大括号。

于 2013-07-31T17:47:56.010 回答
0

您的 GameScene 实施行上有一个开放的 {。

将您的代码更改为

@implementation GameScene

 -(id)init {
self = [super init];
if (self != nil) {

    BackgroundLayer *backgroundLayer = [BackgroundLayer node];
    [self addChild:backgroundLayer z:0];

    GameplayLayer *gameplayLayer = [GameplayLayer node];
    [self addChild:gameplayLayer z:5];
}
return self;
}

 @end
于 2013-07-31T17:55:24.310 回答
0

这很简单。我通过在代码中放置适当的“{”和“}”大括号解决了这个问题。你的代码应该是

    @implementation GameScene 

     -(id)init {
        self = [super init]
        if (self != nil) {

        BackgroundLayer *backgroundLayer = [BackgroundLayer node];
        [self addChild:backgroundLayer z:0];

        GameplayLayer *gameplayLayer = [GameplayLayer node];
        [self addChild:gameplayLayer z:5];
      }
        return self;
     }

   @end
于 2014-09-24T11:45:07.277 回答