次のように作成された200NSMutableArray
個の弾丸 (のサブクラス) を含みます。CCSprite
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];
}
それらを繰り返す for ループを作成し、ブレークポイントを追加して、アドレスが同じかどうかを確認しました。
for (int i = 0; i < capacity; i++)
{
Bullet* bullet = [bullets objectAtIndex:i];
CCLOG(@"%i %i", i, bullet.bulletId);
}
その結果、ポインタ「弾丸」は、200 個の弾丸すべてについて常にメモリ内の同じアドレスを参照します (0x1336c8a0)。弾丸 (int:bulletId) にプロパティを追加して、それらが異なるオブジェクトであるかどうかを識別しようとしましたが、そうです。ポインターが常に同じアドレスを指す理由がわかりません (同じアドレスを参照していますか?それとも単なるポインター メモリ アドレスですか?)。
Bullet*
ポインターから 0x1336c8a0 アドレスを取得する場所は次のとおりです。