for (int i = 0; i < 1000; i++)
{
    CCSprite *sprite = [CCSprite spriteWithSpriteFrameName:@"buster.png"];
    sprite.visible = NO;
    [self addChild:sprite];
}

極端ですが、

こんな感じで最初に1000個のスプライトを生成しておいて

使うときに visible = YES
使い終わったら visible = NO
で使う方法がありますが、これですとメモリの無駄使いになりますよね。

かと言って使うたびに生成

CCSprite *sprite = [CCSprite spriteWithSpriteFrameName:@"buster.png"];
[self addChild:sprite];

してたらパフォーマンスに影響が出るかもしれません。

そこら辺の線引きはみなさんどうしているんでしょうか?

 

走査するときも毎フレーム1000個と考えると怖いですよね。

CCSprite *sprite;
CCARRAY_FOREACH(self.children, sprite){
    if (sprite.visible) {
        CCLOG(@"%d_isVisible",[self.children indexOfObject:sprite]);
    }
}

結論として3GSでカクつかないように調整すればいいです。(適当)