Ярлык Nil с помощью spritebuilder, не могу понять, как это исправить

Я делаю игру для iOS с помощью конструктора спрайтов. И я разработал его в стиле настольной игры. Я хочу, чтобы пользователь нажал кнопку воспроизведения, которая запускает метод play. Затем он генерирует случайное число, которое должно отображаться на этикетке. Метка и кнопка находятся на игровой сцене. Сцена игрового процесса является подклассом CCNode. Код находится в классе Gameplay, который является подклассом CCNode. Я узнал, что метка нулевая. Как мне сделать это не равным нулю? Соединение кода для моей этикетки — это корневая переменная документа, назначенная на _randNumLabel. Моему соединению с игровым кодом присвоено значение Gameplay. Это мой журнал после того, как я открыл сцену и нажал кнопку:

2014-06-09 17:20:12.565 Sunk[6037:60b] CCBReader: Couldn't find member variable: _randNumLabel
2014-06-09 17:20:12.567 Sunk[6037:60b] CCBReader: Couldn't find member variable: _affectLabel
2014-06-09 17:20:19.513 Sunk[6037:60b] Nil`

Игнорируйте _affectLabel, так как это будет исправлено, если _randNumLabel будет исправлено.

#import "Gameplay.h"

@implementation Gameplay
CCLabelTTF *_randNumLabel;
- (void)play {
    if (_randNumLabel == nil)
    {
        CCLOG(@"Nil");
    }
    if (_randNumLabel !=nil)
    {
        CCLOG(@"play button pressed!");
        int max = 6;
        int randNumber = (arc4random() % max) + 1; // Generates a number between 1-6.
        CCLOG(@"Random Number %d", randNumber);
        _randNumLabel.string = [NSString stringWithFormat:@"Number: %d", randNumber];
    }
}
- (void)update:(CCTime)delta {

}

@end

person jakesan700    schedule 09.06.2014    source источник


Ответы (1)


Вам нужно объявить свои переменные экземпляра с помощью фигурных скобок, т.е.:

@implementation Gameplay
{ 
   CCLabelTTF *_randNumLabel;
}

- (void)play {
// rest of your code
...

В качестве личного предпочтения я бы использовал частное свойство вместо переменной экземпляра, например.

@interface Gameplay ()

@property (nonatomic, strong) CCLabelTTF *randNumLabel;

@end

@implementation Gameplay

- (void)play {
// rest of your code
...
person lucianomarisi    schedule 09.06.2014