【问题标题】:Xcode 4.3.1 syntax errorsXcode 4.3.1 语法错误
【发布时间】:2012-10-27 04:50:35
【问题描述】:

我对 Xcode(或一般的 Objective-c)编码还很陌生,我似乎无法摆脱这些错误:

  //
    //  HelloWorldLayer.m
    //  FirstGame
    //
    //  Created by Kostas on 1/14/12.
    //  Copyright __MyCompanyName__ 2012. All rights reserved.
    //


    // Import the interfaces
    #import "HelloWorldLayer.h"
    #import "GamePlay.h"

    // HelloWorldLayer implementation
    @implementation HelloWorldLayer
    +(id) scene {

        CCScene *scene = [CCScene node];

        HelloWorldLayer *layer = [HelloWorldLayer node];
        // add layer as a child to scene
        [scene addChild: layer];
        // return the scene
        return scene;
    }

    // on "init" you need to initialize your instance

    -(id) init {

        if( (self=[super init] )) {

            [CCMenuItemFont setFontName:@"Marker Felt"];
            [CCMenuItemFont setFontSize:35];
            CCMenuItem *Play = [CCMenuItemFont itemFromString:@"PLAY"
                                target:self
                                selector:@selector(gotoGameplay:)];

            CCMenu *menu = [CCMenu menuWithItems: Play, nil];
            menu.position = ccp(240, 160);
            [menu alignItemsVerticallyWithPadding:10];
            [self addChild:menu];
        }

        return self;
    }

    -(void) goToGameplay: (id) sender {

        [[CCDirector sharedDirector] 
               replaceScene:[[CCTransitionFade 
                    transitionWithDuration:1 
                    scene:[GamePlay node]
                              ]];   **<-----Here is my error it says "Expected identifier"**
    }


    - (void) dealloc {


        [super dealloc];
    }
    @end

预期的标识符正是 X-Code 提出的。

【问题讨论】:

    标签: ios objective-c xcode syntax


    【解决方案1】:

    如果计算括号,您会发现左括号比右括号多两个。我在这里缩进了它们,以便您可以清楚地看到问题。

    -(void) goToGameplay: (id) sender {
        [
          [CCDirector sharedDirector] 
          replaceScene:
          [ // <-- either this is extra
            [CCTransitionFade transitionWithDuration:1
                                               scene:[GamePlay node]
            ]
          ];
      //];   <-- or this is missing
    }
    

    编译器试图告诉您它不希望在消息发送表达式的中间找到分号。我对 Cocos2D 框架还不够熟悉,无法知道您到底要做什么,但至少您可以看到问题所在。

    【讨论】:

      【解决方案2】:

      这一行:

      [[CCDirector sharedDirector] 
                 replaceScene:[[CCTransitionFade 
                      transitionWithDuration:1 
                      scene:[GamePlay node]
                                ]];
      

      有 5 个左括号,只有 4 个右括号。需要有相同的数字(并且在正确的位置)。您很可能需要去掉replaceScene: 之后的两个左括号之一。

      顺便说一句 - 你为什么要使用这么旧的 Xcode?您应该使用最新的 - 4.5.1。

      【讨论】:

        【解决方案3】:

        改变

        [[CCDirector sharedDirector] 
                       replaceScene:[[CCTransitionFade 
                            transitionWithDuration:1 
                            scene:[GamePlay node]
                                      ]];
        

        到,

        [[CCDirector sharedDirector] replaceScene:
                [CCTransitionFade transitionWithDuration:1
                                                   scene:[GamePlay node]]];
        

        这应该可以解决问题。在[CCTransitionFade transitionWithDuration:1 scene:[GamePlay node]] 之前你有一个额外的[

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-05-05
          • 1970-01-01
          • 2012-05-02
          • 2012-03-27
          • 1970-01-01
          • 2012-03-26
          • 2012-04-03
          • 1970-01-01
          相关资源
          最近更新 更多