NSMutableArray不添加对象

时间:2013-03-05 01:02:43

标签: objective-c nsmutablearray

我一直试图让我的数组计数,但它一直返回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]);
            }

        }
    }
}

3 个答案:

答案 0 :(得分:2)

asteroids运行或根本不运行时,您正在初始化findTiles的任何方法都不会运行。没有更多的信息,就不可能多说,但这几乎肯定是正在发生的事情。

答案 1 :(得分: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中执行吗?

答案 2 :(得分:0)

如果您只想在findTiles方法中向“小行星”添加对象,请尝试在for循环之前初始化该方法中的数组。

self.asteroids = [@[] mutableCopy];