我有一个NSMutableArray
包含 200 个子弹(的子类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);
}
结果是指针“bullet”对于所有 200 个项目符号 (0x1336c8a0) 始终指向内存中的相同地址。我在项目符号 (int:bulletId) 中添加了一个属性来尝试识别它们是否是不同的对象,但看起来确实如此。我不明白为什么指针总是指向同一个地址(它是指同一个地址吗?还是只是指针内存地址?)。
这是我从Bullet*
指针获取 0x1336c8a0 地址的地方: