Если вы напишите код, подобный этому:
- (void) doStuff
{
[activityIndicator startAnimating];
...lots of computation...
[activityIndicator stopAnimating];
}
Вы не предоставляете UI время для фактического запуска и остановки индикатора активности, потому что все ваши вычисления находятся в главном потоке. Одним из решений является вызов startAnimating в отдельном потоке:
- (void) threadStartAnimating:(id)data {
[activityIndicator startAnimating];
}
- (void)doStuff
{
[NSThread detachNewThreadSelector:@selector(threadStartAnimating:) toTarget:self withObject:nil];
...lots of computation...
[activityIndicator stopAnimating];
}
Или вы можете поместить свои вычисления в отдельный поток и дождаться его завершения, прежде чем вызывать stopAnimation.