成员变量问题

时间:2014-03-11 20:46:40

标签: objective-c debugging cocos2d-iphone

我在Spritebuilder中有一个按钮。特点如下:

Doc root var:_playbutton |选择器:play目标:| Document root

Xcode中按钮的代码:

CCButton *_playButton;
- (void)play {
    CCScene *scene = [CCBReader loadAsScene:@"LevelSelect"];
    [[CCDirector sharedDirector] replaceScene:scene];
}

LevelSelect是Spritebuilder中的一个独立场景。

此代码一直有效,直到我的后退按钮出现问题,后退按钮位于场景LevelSelect中。要查看特性,请参阅我的“使用Spritebuilder,崩溃按钮”问题。

我的问题是,为什么这些代码出现在我的调试控制台中?

CCBReader: Couldn't find member variable: _playbutton

答案有效,有点。但是,现在在LevelSelect中,Xcode找不到Back按钮。这是代码:

@implementation LevelSelect {
CCButton *_backbutton;
}
- (void)back {
    CCScene *backScene = [CCBReader loadAsScene:@"MainScene"];
    [[CCDirector sharedDirector] replaceScene:backScene];
}

如你所见,我已经纳入了答案。你是如何解决这个问题的?

2 个答案:

答案 0 :(得分:2)

放置变量的方式是全局变量,而不是成员变量。

如果您希望成员变量为私有,请将其放在.m文件中以下位置:

@implementation YourClassName {
    CCButton *_playButton;
}

答案 1 :(得分:1)

调试CCBReader:无法找到成员变量XXX警告

如果未正确设置连接,则会显示

CCBReader: Couldn't find member variable XXX。这是一个逐步的工作流程,用于检查以确保您的连接设置正确。

这些事情一直发生在我身上,因为它可能在多个地方都很糟糕。

对于此示例,我将使用名为CCButton的{​​{1}},_backbutton场景是 ivar

确保在 SpriteBuilder

  1. LevelSelectLevelSelect根节点
  2. 的自定义类
  3. 您的CCScene被标记为CCButton,并且标记了正确的名称,如果您不希望它也不应该是自定义类
  4. 执行Doc root var
  5. 按下File->Clean Project按钮
  6. 确保在 XCode

    1. 您有一个名为Publish
    2. 的自定义类
    3. LevelSelect中,您宣布了 ivar
    4. 执行LevelSelect
    5. 运行您的项目
    6. SpriteBuilder

      中的Ivar声明

      Imgur

      Xcode

      中的Ivar声明
      Product->Clean