Вы можете сделать что-то вроде этого:
- (void)buttonAction
{
[activityIndicator startAnimating];
[self performSelector:@selector(doWork) withObject:nil afterDelay:0.0];
}
- (void)doWork
{
//Do your xml parsing here...
}
Это дает пользовательскому интерфейсу возможность обновиться, вернув управление в runloop перед блокировкой основного потока.В зависимости от вашей задачи, было бы неплохо использовать фоновый поток или Grand Central Dispatch, чтобы остальная часть пользовательского интерфейса не блокировалась, и вы могли дать пользователю возможность отменить процесс (что невозможно спростой подход выше).