My advice would be to
- start animation
- start a worker thread which does all the work
- the worker thread is signaling that the job is done, this stops the animation.
Here is some sample code from
Ray Wenderlich. The addOperationWithBlock call looks like taylored for you.
I prefer GCD more for C-API and try to avoid it with the Cocoa classes.