2011-01-27 8 views
0

私のスプライトの座標の配列を作成する必要があります。スプライトに配列の座標があれば、座標を取り除きたいのですが、別のスプライトは必要ありません。同じ座標を、私はそれが動作するように見えることができない、エラーがないと、それはnsexceptionと終了をデバッグするとき。何が間違っているのですか?配列の割り当てを解除するのはどこですか?私がdeallocでそれらをリリースするとき、私はそれらを宣言する必要があると言います。配列から整数を取り除く

CGPoint cg1 = CGPointMake(33,33); 
NSValue *cg1obj = [NSValue valueWithCGPoint:cg1]; 

CGPoint cg2 = CGPointMake(33,97); 
NSValue *cg2obj = [NSValue valueWithCGPoint:cg2]; 

NSMutableArray *numberxy = [[NSMutableArray alloc] init]; int pointcount = 0; 
[numberxy insertObject:cg1obj atIndex:pointcount++]; 
[numberxy insertObject:cg2obj atIndex:pointcount++]; 

NSMutableArray *sprites = [[NSMutableArray alloc] init]; int spritecount = 0; 
[sprites insertObject:red1 atIndex:spritecount++]; 
[sprites insertObject:red2 atIndex:spritecount++]; 

for (int i=0; i<3;i++) { 
    int rpoint = arc4random() % 3; 
    int rsprite = arc4random() % 3; 

    CGPoint point = [[numberxy objectAtIndex:rpoint] CGPointValue]; 

    CCSprite *sprite1 = [sprites objectAtIndex:rsprite]; 

    sprite1.position = ccp(point.x,point.y); 

    if (sprite1.position.x == point.x && sprite1.position.y == point.y) { 
     [numberxy removeObjectAtIndex:rpoint]; 
     [sprites removeObjectAtIndex:rsprite]; 
    } 
} 

答えて

1

コードが奇妙です。使用後にxValueが定義されているのはなぜですか? xValueが以前と同じ方法で定義されていて、今度はxValueを再定義すると、リークが発生する可能性があります。 Xが新しいxValueに入っているかどうかを確認します。新しいxValueには何もないので、ifステートメントはfalseと評価されるため、何も削除されません。

NSNumber *X = [NSNumber numberWithInt:randomNumberx]; 
[xValue containsObject: numberx]; 

xValue = [[NSMutableArray alloc]init]; 
if ([xValue containsObject:X]) { 
    [numberx removeObject:X]; 
} 

if文の外側にある[xValue containsObject: numberx];の点は何ですか?それは目的を持っていません。

+0

変わっていない - ナンセンス。 Dangermouseのコードは意味を持たず、オブジェクト参照のポインタの理解の欠如を示します。私の提案は、Objective-Cガイドを読んで、そのコードでコンピュータを再生することです。すべてのコード行が何をするのかを説明してください。 – bbum

+0

@David - 申し訳ありませんが、私は2つの異なるプログラムから1つにコードをコピーしてしまいました.2つのプロジェクトが開いていたので、コードを編集します。 – Dangermouse

+0

@Dangermouse、コードが正常に更新されました。それは動作しますか? – David

関連する問題