0

ラベルを追加しようとしている NSMutableSet があります。各ラベルが追加された後、セットのカウントを確認すると、0 として返されます。

私の .h ファイルで:

@interface MainMenu : CCLayerColor {
    NSMutableSet* letters;
}

私の.mファイルでは:

-(void)initiateLetters{
    //Grab the window size
    CGSize size = [[CCDirector sharedDirector] winSize];

    int i;
    for(i=0;i<100;i++){
        CCLabelTTF *label;
        int r = rand() % 35 + 60;
        char c = (char) r;
        label = [CCLabelTTF labelWithString:[NSString stringWithFormat:@"%c",c] fontName:@"Courier" fontSize:30];
        [label setColor:ccc3(0,0,0)];
        [label setOpacity:255/2];

        //Generate a random number for the x variable, y will be 0
        int x = (arc4random() % (int)size.width);
        int y = size.height+(arc4random() % 50)+25;

        [label setPosition:ccp(x,y)];
        [self addChild:label];
        [letters addObject:label];

        //Here's what's printing 0:
        printf("%lu",[letters count]);
    }
}
4

2 に答える 2

2

セットに何かを追加する前に、セットをインスタンス化する必要があります。のオーバーライドされた実装でそれを行うことができますinit:

- (id)init
{
    self = [super init];
    if (self) {
        letters = [[NSMutableSet alloc] init];
    }
    return self;
}

…またはinitiateLettersメソッドの最初に:

- (void)initiateLetters
{
    letters = [[NSMutableSet alloc] init];
    ...

代わりに、投稿したコードは に送信addObject:するだけnilで、何もしません。

于 2013-12-12T23:43:45.910 に答える