Я не знаю, где бы я оценил это, но я знаю, что я не хотел бы делать это таким образом. Возиться с системным циклом запуска по умолчанию кажется плохой идеей.
Есть несколько хороших подходов. Самое простое - поместить дополнительную обработку в отдельный закрытый метод, а затем сделать это:
[[ActivityIndicator sharedActivityIndicator] show];
[self performSelector:@selector(processingMethod) withObject:nil afterDelay:0];
Это приведет к тому, что processingMethod будет вызываться в конце цикла выполнения, после того, как ваш индикатор отобразится. Должно работать нормально.
Единственное предостережение в том, что если ваш индикатор анимирован, в зависимости от того, как он настроен, он может не анимироваться во время работы processingMethod. В этом случае вы захотите запустить processingMethod в фоновом потоке, который может быть немного сложнее или может быть проще, чем сделать это вместо этого:
[self performSelectorInBackground:@selector(processingMethod) withObject:nil];
Потенциальная сложность заключается в том, что в конце processingMethod, когда вы собираетесь отображать результаты вашей обработки, вам, возможно, придется вызвать метод обратно в основной поток.