Если методы
[self downloadControlAndUpdatePoi];
[self downloadControlAndUpdateItinerari];
[self downloadControlAndUpdateArtisti];
[self downloadControlAndUpdateEventi];
выполняются синхронно (это означает, что они возвращаются только после полной обработки), поэтому:
[self hideActivityViewer];
выполняется только в самом конце.
Простой подход к этому - планирование выполнения ваших методов в главном потоке:
[self performSelector:@selector(downloadControlAndUpdatePoi) withObject:nil afterDelay:0];
....
[self hideActivityViewer];
, чтобы эти методы выполнялись только после того, как управление вернулось в основной цикл и обновился пользовательский интерфейс.
В противном случае вы можете использовать:
+ detachNewThreadSelector:toTarget:withObject:
из NSThread , чтобы сделать более или менее то же самое. В этом случае я бы предложил создать метод-оболочку для всех ваших методов dowloadAndUpdate...
, но имейте в виду, что вы не можете обновить пользовательский интерфейс из вторичного потока.
В обоих случаях вам следует позаботиться о синхронизации операций download...
с остальной частью вашего рабочего процесса после удаления представления предупреждений.