Я использую TmxWebUpdate. Это свободно, просто и дает Вам хороший контроль над процессом. Я на самом деле владею Пакетом Компонента TMS с TWebUpdate, но никогда действительно нашел серьезное основание переключиться.
Редактирование: Свяжитесь обновленный
Batgar ' техника слишком сложна. Почему бы не воспользоваться параметром forKey в addAnimation? Он был предназначен именно для этого. Просто возьмите вызов setValue и переместите ключевую строку в вызов addAnimation. Например:
[[hearingAidHalo layer] addAnimation:animation forKey:@"Throb"];
Затем в обратном вызове animationDidStop вы можете сделать что-то вроде:
if (theAnimation == [[hearingAidHalo layer] animationForKey:@"Throb"]) ...
ИМХО, использование пары "ключ-значение" Apple - это элегантный способ сделать это: он специально предназначен для того, чтобы разрешить добавление данных приложения к объектам.
Другой, менее элегантный способ - сохранить ссылки на объекты анимации и выполнить сравнение указателей для их идентификации.
Второй подход будет работать только в том случае, если перед запуском анимации вы явно зададите для нее параметр не удаляться по завершении:
CAAnimation *anim = ...
anim.removedOnCompletion = NO;
Если вы этого не сделаете, ваша анимация будет удалена перед завершением, и обратный вызов не найдет ее в словаре.