Исключительно в вопросе о разрешении методу принимать типы User и DemoUser, вы можете установить класс Interface, который может реализовывать и пользователь, и DemoUser.
Надеюсь, что это помогает.
При установке делегата к CAAnimation можно добавить метод обратного вызова:
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
Это называют, когда анимация завершена. Ищите примеры вращающихся анимаций через матрицу преобразования CGAffineTransform согласно этой ссылке:
http://iphonedevelopment.blogspot.com/2008/10/demystifying-cgaffinetransform.html
Как в стороне, можно также сделать тот же вид обратного вызова для анимации UIView путем обертывания вызова для вращения UIView в следующем блоке кода
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5f];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(rotationAnimationHasFinished:finished:context:)];
// Rotate the view here
[UIView commitAnimations];
и затем определение метода делегата
- (void)rotationAnimationHasFinished:(NSString *)animationID finished:(BOOL)finished context:(void *)context;
{
// Handle the completion of the animation
}
в Вашем делегате, который сделает то, к чему Вы нуждаетесь после, завершилась анимация.