2016-03-26 3 views
3

При запуске приложения я получаю экран запуска около 2-3 секунд, и только тогда появляется мой первый UIViewController.Как отлаживать медленный запуск приложения

И несколько раз мой ViewDIdAppear вызывается перед появлением UIViewController.

У меня есть довольно большая раскадровка (15 экранов).

У меня есть несколько флагов, которые я проверяю из UserDefaults (пользователь входит в систему ...), и я инициализирую crashlytics и GCM.

Значит, флаги и инициализация не являются проблемой.

Я проверил разницу во времени системы, и кажется, что все в порядке.

Любые идеи для отладки медленного запуска?

+1

Используйте время профильные инструменты инструмент – Paulw11

ответ

5

В Xcode: Продукт -> Профиль

Выберите «Time Profiler»

Запуск этого инструмента даст вам время, проведенное в каждом методе в вашей программе, и это даст вам эту информацию в иерархическая структура. Это должно дать вам представление о том, где большую часть времени тратится. Имейте в виду, что аппаратура добавляет дополнительные накладные расходы, поэтому абсолютное значение времени может быть неправильным, но доля времени, затрачиваемого на каждый метод, должна быть необходимой для отладки этой проблемы.

Вот достойный вид tutorial (хотя и в старой версии Xcode), показывающий, как использовать этот инструмент.

enter image description here

2

Время профайлер не поможет, если медлительность с момента инициализации. За это время ни один из ваших кодов не запущен, поэтому профиль времени не будет регистрировать ничего. Вы можете иметь xcode распечатать stattics о том, сколько времени требуется, чтобы запустить, перейдя в «edit scheme» -> run -> переменные окружения добавить добавить DYLD_PRINT_STATISTICS со значением 1. Идеально, чтобы время запуска было меньше 400 мс, что о длине анимации открытия. Я смог сократить время запуска пополам, удалив use_frameworks! от кокоаподов. И я смог сократить его в два раза, удалив неиспользуемые внешние библиотеки.

Существует большое яблоко лекция на эту тему здесь: https://developer.apple.com/videos/play/wwdc2016/406/

+0

что вы имеете в виду, удаляя «use_frameworks»? вы больше не используете cocoapods? – ilan

+0

Я удалил строку 'use_frameworks!' Из файла pod, которая сообщает cocoapods компилировать код в фреймворки вместо статических библиотек. –

Смежные вопросы