I think this might have something to do with threading (eg. the UI on main thread not being ready to animate the indicator). You could try something like the following:
[activityIndicator performSelector:@selector(startAnimating:) withObject:nil afterDelay:1];
This is just a possible suggestion though, you should try different variations and check which one forces the animation onto the main thread correctly and in a timely matter. Another variation:
dispatch_async(dispatch_get_main_queue(), ^{
[activityIndicator startAnimating];
});