Я строю свой собственный индикатор активности, такой как класс, который должен исчезнуть перед тяжелой операцией и исчезнуть после ее завершения. Это работает нормально, пока я не столкнусь со следующим сценарием:
[[MyLoaderClass sharedInstance] displayLoaderInView:self.view];
for( int i = 0; i < 1000; i++ ) {
NSLog(@"Performing heavy operation...");
}
[[MyLoaderClass sharedInstance] removeLoaderInView:self.view];
Что происходит в первой строке, так это то, что моему представлению загрузчика присвоено значение, добавлено подчиненное отображение и сказано, что оно затухает с помощью стандартной анимации UIView. Однако анимация не запускается (как показано setAnimationWillStartSelector:
) до тех пор, пока после тяжелая операция не будет завершена.
Теперь, конечно, следует избегать тяжелых операций в главном потоке, но я все же хочу, чтобы мой класс загрузчика работал независимо от того, что программисты могут на него бросить.
Я попытался переместить загрузчик в отдельный поток и анимировать его оттуда, что прекрасно работало, но привело к сбоям, поскольку нехорошо манипулировать представлениями из потоков, отличных от основного потока.
Мой вопрос: Можно ли делать то, что я хочу, и / или мне вообще это надо?