0

我一直在尝试获取我的数组计数,但它一直返回 0,我认为它没有正确添加对象。我将我的属性放在头文件中并在 layer.m 文件中合成它。我在我的超级初始化中分配了空间。

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 回答