Я предполагаю, что рассматриваемый "разбитый спрайт", вероятно, является одним из множества спрайтов, видимых на экране, более чем вероятно, имеющих одинаковую текстуру (возможно, часть листа спрайта, или все то же изображение и т. Д.? ).
Если это так, я бы порекомендовал выделить на экране количество спрайтов, которое требуется вашим играм, и вместо того, чтобы «уничтожать» (удалять их, заново создавать их), вам следует «повторно использовать их».
Сохраните ссылку на все CCSprite в NSMutableArray, заполните этот массив количеством спрайтов, которые вы считаете подходящими (сколько спрайтов удаляется в секунду? Сколько спрайтов добавляется в секунду? Сколько спрайтов на экране для начала? - используйте ответы на эти вопросы, чтобы определить наиболее подходящий размер вашего массива).
Затем, вместо удаления спрайта как дочернего, просто [sprite setVisible: NO], чтобы скрыть его, затем ... когда вам нужно отобразить новый на экране, используйте следующий «доступный» (скрытый) спрайт в массиве (отслеживайте последний «использованный» спрайт с индексом и просто увеличивайте его на 1, чтобы найти следующий «доступный». Как только индекс превысит границы, сбросьте его на 0 - в этот момент этот спрайт должен были "разбиты"). Как только у вас появится следующий «доступный» спрайт, измените его свойства (положение, масштаб, текстуру? Видимость) и примените все соответствующие действия (не забывайте «останавливать все действия» над ним, когда «разбиваете его») - это это то, что делает "cleanup: YES").
Если ваша игра не позволяет вам ходить по кругу, как этот, потому что пользователь решает, что может или не может быть видно, взаимодействуя со спрайтами в различном порядке, тогда вы можете сохранить ссылку на " «разбить спрайты» в отдельном массиве (сохраняя при этом и в исходном массиве - тогда вы можете просто выбрать любой объект из «неиспользуемого» массива, удалить его из этого массива и затем изменить его, как указано выше).
Это должно значительно снизить частоту смены кадров, поскольку вы не будете создавать и уничтожать спрайты все время.
Еще одна вещь, которая может происходить, это то, что вы используете разные изображения, и каждое изображение хранится отдельно (image1.png, image2.png, image3.png), и их создание / уничтожение приводит к удалению текстур и повторно добавили ... для решения этой проблемы создайте лист спрайтов и добавьте лист спрайтов в кэш текстуры, затем создайте изображения с помощью 'spriteFromSpriteCacheName: @ "image1.png"'