1

私は次のコードを実行していますが、CCLOGは常にトリガーされます。2つのポインターのアドレスが同じで、理由がわかりません。助けが必要です:)

bulletsは、この質問の最後に初期化されたBullet:CCSpriteの200百のインスタンスを持つNSMutable配列です*。

for (int i=0; i<capacity; i++)
{
    Bullet* bullet = [bullets objectAtIndex:i];

    if (bullet.visible )
    {
        for(int j=i+1;j<capacity;j++)
        {

            Bullet * otherBullet = bullet = [bullets objectAtIndex:j];

            if(bullet.bulletId == otherBullet.bulletId)
            {
                CCLOG(@"noooo.. i:%i j_%j", i, j);
            }

*アレイの初期化:

capacity=200;
    bullets = [[NSMutableArray alloc] initWithCapacity:capacity];
    // Create a number of bullets up front and re-use them whenever necessary.
    for (int i = 0; i < capacity; i++)
    {
        Bullet* bullet = [Bullet bulletWithScreenRect:screenRect];
        bullet.visible = NO;
        bullet.bulletId=i;
        [bullets addObject:bullet];
        [self addChild:bullet]; 
4

1 に答える 1

0

kevingessnerによって発見された私のコードにバグがありました:

"Bullet * otherBullet = bullet = [bullets objectAtIndex:j];"

最新の弾丸を弾丸と他の弾丸に割り当てていました。このようにして、同じ弾丸への2つのポインターがあります。

..so「インデックスのオブジェクト」はそれを実行するだけです(特定のインデックスのオブジェクトへのポインタを返します)

于 2013-01-02T22:06:22.030 に答える