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 に答える