petruska
@petruska
IOS Developer

Как ускорит загрузку контроллера?

Доброго времени суток, в моем контроллере я долже заполнить строками 25 массивов
если я их иниц в viewDidLoad, то переход на контроллер(через кнопку) проходит с лагом(прога как заедает)
когда я иниц их в viewWillApper, то переход стал быстрее
Скажите как и где лучше иниц их? Почему в 2 методе пол быстрее (я понимаю что он вызыв при прорисовке)
P.S кор дата не оч потходит,не умею работать с 2д массивами(с массивы не хочу юзать)
  • Вопрос задан
  • 197 просмотров
Решения вопроса 1
Flanker_4
@Flanker_4
Долгоиграющие задачи вообще не должны выпоняться в UI треде

Общепринятая практика - выносить их в фон, а потом возвращаться в главный поток

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    /* долгая операция */

    dispatch_async(dispatch_get_main_queue(), ^{
        /* обновляем ui*/
    });
});

Вот тут немного подробней idev.by/ios/21112

Т.е. общий план такой:
1) в init/viewDidLoad - где то там запускаете операцию, которая долго выполняется в фоновом потоке
2) Опционально отображаете крутилку
3) Когда операция закончена, забираете данные и на основе их обновляете ui
4) Опционально останавливаем отображение крутилки
4) Profit
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@shomishinec
Software Developer
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы