Звучит так, как будто вы выполняете обработку в главном потоке, который препятствует запуску вашей анимации.
Анимации запускаются в главном потоке, поэтому во избежание блокировки этого потока обработку следует запланировать в другом потоке.
Вы можете добиться этого, используя блоки, например:
dispatch_queue_t queue;
queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
// Your processing to be performed on this thread.
});
Или в более ранних версиях iOS, например:
[self performSelectorInBackground:@selector(yourProcessing) withObject:nil];
- (void)yourProcessing {
// Your processing to be performed on this thread.
}
Я настоятельно рекомендую прочитать Руководство по программированию потоков с последующим просмотром сеансов WWDC, охватывающих блоки и Grand Central Dispatch (WWDC 2009).