Да, вам нужно поместить вашу операцию в отдельный поток, пока вызовы UIActivityIndicatorView остаются в основном потоке.
И вот почему: если вы начнете анимацию представления индикатора, то сразу начнете свой процесс, ваш процесс будет блокирован до завершения, и пользователь никогда не увидит никакой «активности».
Вместо этого начните анимировать индикатор, а затем создайте новую ветку для вашего процесса. Используйте уведомления, шаблон делегата или performSelectorOnMainThread:withObject:waitUntilDone:
, чтобы сообщить основному потоку, что процесс завершен. Затем остановите анимацию и продолжайте.
Это гарантирует, что пользователь знает, что что-то происходит, пока ваш процесс делает свое дело.