Обложка канала

iOS Dev

iOS разработчик, который делится фишками, своим опытом и опытом других. В этом канале вы сможете найти истории из жизни, подходы к реализации а также новости и тренды из мира iOS-разработки Авторский канал, iOS разработка

iOS Dev

4 года назад
Открыть в
Как улучшить отклик приложения: 10 советов от инженеров Apple Когда приложение реагирует на жесты и касания в режиме реального времени, у пользователей создается положительное впечатление. Приложения с зависаниями (задержками отклика) или дёрганым поведением на экране разрушают эту иллюзию. Это заставляет пользователя задуматься, правильно ли работает приложение. Чтобы избежать зависаний и заминок, при разработке и тестировании приложения нужно учитывать следующие приблизительные пороговые значения. 100 мс — это максимальная отсечка для задержек при непосредственном взаимодействии с пользователем. Более короткая задержка редко заметна. 5 мс — это порог для достижения плавного скролла на экране. Для непрерывного скролла новый фрейм должен быть готов каждый раз при обновлении экрана. На устройствах Apple это может происходить 120 раз в секунду, или каждые 8,3 мс. В зависимости от системных условий и задач в приложении, у вас может не быть полных 8,3 мс для подготовки следующего обновления экрана. Вот десять советов, которые помогут избежать зависаний и сбоев в приложении, а также несколько инструментов, которые помогут вам обнаруживать и анализировать эти типы проблем с реагированием. 1️⃣ Избегайте зависаний, освобождайте основной поток от работы, не связанной с пользовательским интерфейсом. 2️⃣ Проанализируйте, какие части вашего приложения должны выполняться в основном потоке, а какие нет. 3️⃣ Избегайте слишком большого количества потоков. Dispatch и OperationQueue поддерживают внутренний пул рабочих потоков, настроенных на емкость и нагрузку устройства. Используйте эти технологии вместо создания собственных фоновых потоков для сохранения баланса. 4️⃣ Избегайте лагов, сводя к минимуму время обновления для view. Чтобы обеспечить плавную анимацию, которая выглядит как непрерывное движение, устройства Apple обновляют экран до 120 раз в секунду. Когда ваше приложение находится в foreground (на переднем плане, кому как привычнее), код отрисовки в основном потоке должен быть завершен до того, как потребуется следующий фрейм, чтобы избежать пропуска кадров и появления рывков. 5️⃣ Оптимизируйте свое приложение для переменной частоты обновления. Если ваше приложение напрямую взаимодействует с графической системой, например, когда вы выполняете собственный рендеринг, помните о дисплеях с переменной частотой обновления. 6️⃣ Напишите тесты производительности, чтобы обеспечить быстрое выполнение кода, привязанного к основному потоку. 7️⃣ Ищите зависания и потенциальные риски, которые могут к этому привести. 8️⃣ Попробуйте найти сами причины зависаний. Обратите внимание на Thread State Trace instrument. 9️⃣ В целом чаще используйте Instruments для обнаружения узких мест приложения. 🔟 Уделяйте внимание метрикам и отчётам непосредственно от приложения. @iOS Dev — делюсь советами не только для плавного скролла😅