Выбор ответа Senior Производительность и тестирование обновлено

Приложение пропадает без крэш-лога

Вопрос

Пользователи жалуются, что приложение «закрывается» при работе с камерой, а в крэш-репортах пусто. Какова вероятная причина?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Система завершает процесс за превышение лимита памяти. При нехватке памяти система сначала шлёт предупреждение (didReceiveMemoryWarning), а при превышении лимита убивает процесс.

Варианты ответа

  1. Приложение само вызывает exit(0) при ошибке доступа к камере
  2. Система завершает процесс за превышение лимита памятиправильный ответ
  3. Ошибка подписи кода при обращении к камере
  4. Утечка потоков GCD, после которой процесс зависает

Разбор

При нехватке памяти система сначала шлёт предупреждение (didReceiveMemoryWarning), а при превышении лимита убивает процесс. Это не исключение, классические крэш-репортеры его не видят, зато в настройках устройства есть отчёты JetsamEvent, а MetricKit сообщает о завершениях по памяти. Типичная причина: полноразмерные кадры камеры и изображения в памяти. exit(0) и ошибки подписи дают другие симптомы.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.