#iphone #performance #startup
#iPhone #Производительность #запуск
Вопрос:
Моему приложению требуется длительный период времени во время запуска, пока отображается заставка. Я предполагаю, что это так из-за размера того, что должна загружать iOS, включая библиотеки. Мой вопрос в том, могу ли я загрузить их в тот момент, когда пользователь действительно захочет их использовать, чтобы сократить время запуска? Есть ли другие способы сделать это короче? Большое спасибо.
Ответ №1:
Все сторонние библиотеки статически связаны с вашим приложением. Теоретически вы можете лениво загружать только собственные библиотеки Apple со слабыми связями. Я не знаю, как вы можете управлять этим процессом на iOS. Это, безусловно, возможно на Mac.
Комментарии:
1. Вы можете установить связанные библиотеки как слабые, даже если они сторонние (Цель> Информация> Общие), но я не знаю, будет ли это иметь какой-либо эффект.
2. @toupper, как я понимаю. Единственная причина для установки слабой привязки — убедиться, что ваше приложение разрешает символы платформы, на которой находится ваше приложение, а не использует символы платформы, на которую было скомпилировано ваше приложение. Нет никакого смысла в том, чтобы ваша собственная библиотека была слабой.
Ответ №2:
конечно, вы можете, если они вам не нужны напрямую.
Ленивая загрузка не ограничивается тем, что вы также применяете, например, если у вас огромная сцена Opengl, вы можете выбрать не загружать ее текстуры, пока пользователь действительно не нажмет на нужную вам кнопку.
Недостатком этого является то, что время ожидания открытия всего, что требует ленивой загрузки, будет перенесено дальше по приложению (когда пользователь захочет поиграть, у него будет более длительное время загрузки).
Что вы могли бы попробовать, так это запустить поток, который обрабатывает загрузку при запуске, и из потока вы выполняете setBooleanLibXFinishedLoading таким образом, вашему приложению останется только дождаться, пока все booelan будут настроены для продолжения. Это должно сократить кажущееся время ожидания для пользователя, оптимизируя время, фактически затрачиваемое на загрузку.
надеюсь, это поможет
Джейсон
Комментарии:
1. Спасибо за ваш ответ, Джейсон. Из вашего комментария у меня возникает этот вопрос: как я могу избежать загрузки библиотек iOS в начале? Как я могу загрузить их позже? Большое спасибо.
2. Хорошо, не могли бы вы добавить пример того, что вы называете загрузочной библиотекой? (извините, в данный момент я в основном работаю с Android, поэтому немного устал от IOS)
3. Я предполагаю, что iOS загружает фреймворки и библиотеки, которые мы добавили в проект (например, libGoogleAnalytics.a) при запуске. Я ничего не делаю в коде для их загрузки, только импортирую файл. Возможно, кто-то более опытный мог бы поправить меня в этом отношении.