Создание 30 новых анимаций в секунду - это действительно плохая идея, а не то, как Core Animation была предназначена для использования. Базовая анимация была разработана на основе идеи, что вы сообщаете системе, где вы хотите, чтобы ваш слой (или слой со слоем) заканчивался, и он вычисляет остальное, включая количество кадров, которые нужно отбросить для запуска анимации за указанный вами период предоставлять. Сами анимации будут выполняться в фоновом потоке, но я считаю, что сначала нужно выполнить небольшую настройку, которая выполняется в вызывающем потоке (обычно в основном потоке). Эта настройка может занять больше 1/30 секунды, что приведет к перегрузке вашего основного потока.
Ваша цель должна состоять в том, чтобы минимизировать количество взаимодействия с Core Animation. Если у вас есть сложная, но запрограммированная траектория движения (или другое изменение свойства), установите все это заранее, используя CAKeyframeAnimation, и просто вызовите эту анимацию один раз. Если есть что-то в движении вашего объекта, которое необходимо изменить в ответ на пользовательский ввод, делайте это только тогда, когда вы получите фактический ввод. Изменение свойства середины анимации CALayer заставит его плавно переместиться из середины текущей траектории движения в новое место назначения.
Если вы работаете с Core Animation таким способом, вы можете одновременно анимировать до 50 движущихся полупрозрачных слоев со скоростью 60 кадров в секунду на iPhone.