Best way to refactor this loop of animations with delay?
Anything that you're using as a constant should be marked as such.  

double const delayInSeconds = 0.2f;




Now then, we know in Objective-C, we have NSArray and its mutable cousin, and they can only hold objects.  But also remember, Objective-C is a superset of C.  We can use a C-Style array.

int const POPTIME_COUNT = 8;

dispatch_time_t poptime[POPTIME_COUNT];


And then fill this an array with a loop...

for (int i = 0; i &lt; POPTIME_COUNT; ++i) {
    double totalDelay = delayInSeconds + ((i + 1) * 0.1 * NSEC_PER_SEC)                
    poptime[i] = dispatch_time(DISPATCH_TIME_NOW, totalDelay);
}




Firing off the animations is done just as easily in a loop:

for (int i = 0; i &lt; NUM_ANIMATIONS; ++i) {
    dispatch_after(poptime[i], dispatch_get_main_queue()), ^(void){
        [self animateWithCoreAnimaGenerallyWithIndex:i];
    }];
}


Where NUM_ANIMATIONS is the number of animations you need to fire off (it's different in each branch).