Это очень раздражает - я хотел бы видеть свойство удаления, чтобы мы могли узнавать о событиях анимации!
Вот как я это делал в прошлом (может быть, и лучше!)
1) Установите свойство анимационных изображений и запустите анимацию (как в вашем коде в вопросе)
2) Запланировать отключение NSTimer за секунды 'animationDuration'
3) Когда таймер отключится, установите свойство изображения как последний объект в массиве animationImages, а затем установите для свойства animationImages значение nil.
EDIT: Ron Srebro правильно указал на возможную ошибку - если таймер вообще задерживается, анимация будет выглядеть неправильно.
Я исправил это, дважды добавив последний кадр к animationImages - это означает, что если таймер задерживается, мы все равно показываем последний кадр, и пользователь никогда не заметит.
NB. Это не на 100% исправит эту ошибку, но я никогда не видел, чтобы это случилось с этим исправлением на месте. Это может не работать для приложений с интенсивным использованием процессора, так как таймер может быть задержан более чем на один кадр: (