0

にスプライトを追加しようとしてNSMutableArrayいますが、追加されていません。これは私が持っているものです:

NSMutableArray *tail;
CCSprite *block;
int j;
-(void)handleTail:(CCSprite*)pos{
    CGPoint point= pos.position;
    block = [CCSprite spriteWithFile:@"Icon-Small-50.png"];
    //Adding the tail blocks
    block.scale = .8;
    block.color = ccGREEN;
    block.position = point;
    NSLog(@"Block Pos (%f,%f)",block.position.x,block.position.y);

    //CGPoint playerPos = piece.position;

    originalPos = point;

    if ([tail count] < maxLength) {
        [tileMap addChild:block];
        [tail addObject:block];
        NSLog(@"Tail length:%i",tail.count);
        j+=1;
    }
    if (j == 3) {
        NSLog(@"J called");
        [tail removeObjectAtIndex:0];
    }   
}

なぜこれが機能しないのか理解できませんか?

4

4 に答える 4

2

を割り当て+初期化していませんtail

awakeFromNib または init または viewDidLoad (クラスに適用可能な方) で使用

tail=[[NSMutableArray alloc] init];

提案 注 : 命名規則に従うようにしてください。

tail配列 (複数) と同様に、 を使用する必要がありますtails

于 2013-02-18T16:32:06.230 に答える
1

initNSMuttableArrayを割り当てるのを忘れています

tail = [[NSMuttableArray alloc] init];

配列を割り当てて初期化しないと、オブジェクトを追加できません

そのメンバーにアクセスしようとすると、nilが返されます

NSLog(@ "%@"、tail);を試してください。戻ります

于 2013-02-20T06:04:57.387 に答える
0

NSMutableArray をインスタンス化する必要があります。

tail = [NSMutableArray array];
于 2013-02-18T16:32:41.190 に答える
0

配列を割り当てて初期化する必要があります。

何かのようなもの:

tail = [NSMutableArray array];
于 2013-02-18T16:33:08.413 に答える