Я предполагаю, что для индикатора сетевой активности требуется компоновка некоторых представлений, то есть, когда вы делаете (не) видимым, он отправляет [self setNeedsLayout]
в некоторый момент.Этот метод не вызывает компоновку немедленно, он просто помечает представление как нужное с фактическим макетом, происходящим в конце цикла выполнения .Проблема в вашем случае заключается в том, что вы блокируете основной поток синхронным запросом, так что конец цикла выполнения наступает через после , и вы снова делаете индикатор невидимым.
Единственный способчтобы не блокировать основной поток: сделайте его асинхронным с точки зрения основного потока.Вы можете
- использовать асинхронный API NSURLConnection;
- использовать синхронный API NSURLConnection в фоновом потоке;
- использовать синхронный API NSURLConnection с NSOperationQueue.
Идея состоит в том, чтобы показать индикатор сетевой активности, запустить сетевой запрос, разрешить вращение цикла выполнения основного потока и скрыть индикатор, когда запрос завершен.