Если бы вы поместили этот оператор, скажем, в цикл for, вы бы снова и снова добавляли изображение red.png в общий кэш текстур, что, я сомневаюсь, вам и нужно.
Давайте немного вернемся назад и переписаем вещи, начав с добавления изображения red.png в общий кэш текстур, в отдельной строке:
[[CCTextureCache sharedTextureCache] addImage:@"red.png"];
Впоследствии вы снова получите ту же текстуру, просто вызвав [CCTextureCache sharedTextureCache]. Пока вы не добавите другое изображение в общий кеш текстур, то есть.
CCTextureCache является одноэлементным, и его документы не предполагают, что есть способ сделать копию общего кэша текстур (который был бы идеальным для сохранения вашей redTexture). В таком случае просто создайте переменную и укажите ее на [CCTextureCache sharedTextureCache]; просто будьте осторожны, чтобы не добавлять в него другие изображения, прежде чем закончить с ним:
CCTextureCache *redTexture = [CCTextureCache sharedTextureCache];
Теперь давайте предположим, что у вас уже есть массив (или изменяемый массив) с именем ballArray, который содержит 20 объектов ball. Вы можете просмотреть их так:
for (YourBallObject *ball in ballArray)
{
[ball setTexture:redTexture];
}
Или даже лучше, вы могли бы сделать это:
[ballArray makeObjectsPerformSelector:@selector(setTexture:) withObject:redTexture];
Удачи в ваших начинаниях.