0

配列カウントを取得しようとし続けていますが、0 を返し続けています。オブジェクトが正しく追加されていないと思います。プロパティをヘッダー ファイルに入れ、それを layer.m ファイルに合成しました。スーパーinitにスペースを割り当てました。

NSMutableArray *asteroids;

@property (strong) NSMutableArray *asteroids;

@synthesize asteroids;

self.asteroids = [[NSMutableArray alloc] init];

-(void)findTiles
{
    CGPoint tilecoord1;
    int tileGid1;
    int aheadcount = 200;
    CCSprite *tileonPos[aheadcount];
    int amounts = 0;

    for(int x = 0; x<30; x++)
    {
        for(int y = 0; y<20; y++)
        {
            tilecoord1 = ccp(x+(480*currentlevel),y);
            tileGid1 = [bglayer tileGIDAt:tilecoord1];
            if(tileGid1 == 1)
            {
                tileonPos[amounts] = [bglayer tileAt:ccp(x,y)];
                amounts++;
                [asteroids addObject:tileonPos[amounts]];
                NSLog(@"%d",[asteroids count]);
            }

        }
    }
}
4

3 に答える 3

2

いずれかで初期化asteroidsしているメソッドは、実行されているか実行されていないときにfindTiles実行されません。これ以上の情報がなければ、これ以上言うことはできませんが、ほぼ確実に起こっていることです。

于 2013-03-05T01:07:14.770 に答える
1

初期化時に呼び出しましself.asteroids = [[NSMutableArray alloc] init];たが、追加時に呼び出します[asteroids addObject:tileonPos[amounts]];

試してください:[self.asteroids addObject:tileonPos[amounts]];または[_asteroids addObject:tileonPos[amounts]];

self.asteroids = [[NSMutableArray alloc] init];また、initで実行されていると確信していますか?

于 2013-03-05T01:08:52.160 に答える
0

オブジェクトを findTiles メソッドの「小惑星」にのみ追加する場合は、 for loop の前にそのメソッドで配列を初期化してみてください。

self.asteroids = [@[] mutableCopy];
于 2013-03-05T01:09:49.577 に答える