У меня проблемы с [UICollectionView reloadData], который довольно долго зависает, прежде чем вызывает numberOfSectionsInCollectionView для своего делегата, который я указал. Вот что происходит:
Приложение начинается с видимого UICollectionView, и делегат вызывается numberOfSectionsInCollectionView, который возвращает количество элементов в пустом массиве (т. е. 0) и немедленно начинает загружать данные для массива из веб-службы. После завершения загрузки данные десериализуются и добавляются в указанный выше массив, затем для экземпляра UICollectionView вызывается reloadData. Тут приложение как бы перестает что-либо делать, и через 20-30 секунд (иногда до минуты) делегат получает вызов numberOfSectionsInCollectionView. Как только этот вызов получен, перезагрузка быстро завершается.
Я считаю, что reloadData работает в своем собственном потоке, но я попытался запустить его в отдельном потоке, чтобы убедиться, что мой код не блокирует процесс. Что может делать reloadData, пока кажется, что он завис? Существуют ли какие-либо промежуточные методы делегата между reloadData и numberOfSectionsInCollectionView, которые мне следует реализовать? Я думал, что это первый метод, который будет вызываться после перезагрузки с точки зрения разработчика iOS.
Если бы кто-нибудь мог сказать мне, что может пойти не так, это фантастика, но я также был бы признателен за любые советы о том, как это отладить!