Приложение Swift IOS не запускается после простоя более 1 дня

У меня есть простое приложение в Swift с несколькими взглядами:

  • UIWebView
  • некоторые TableViews
  • и другой вид с некоторыми данными, которые я загружаю с моего сервера

Все работает хорошо, пока при использовании приложения я не нажму кнопку "Домой", оставлю там на некоторое время, после чего iPad перейдет в спящий режим. Через несколько дней я нажимаю на значок приложения, и оно не запускается:

  • первое нажатие на иконку выберет иконку (станет немного темнее) и отменит выбор через несколько секунд
  • второе нажатие запустит LaunchScreen и вылетит через несколько секунд
  • дважды нажмите кнопку домой и выйдите из приложения, иногда будет работать

Мне просто интересно, есть ли что-то, что мне нужно установить в моем коде для обработки простоя / длительных периодов бездействия в чем-то вроде viewWillDisappear или другие методы?

Если так, то у меня уже есть это во всех моих контроллерах:

override func viewWillDisappear(animated: Bool) {
    timer.invalidate()
    webView.removeFromSuperview()
}

Может мне нужно позвонить super. там тоже? или что-то еще мне не хватает?

2 ответа

Возможно, у вас есть исключение нулевого указателя и сбой. Возможно, вы вызываете какую-то переменную, которая не установлена ​​(и проверена, если не нулевая). Попробуйте отключить функциональность приложения (например, загрузку, хранение и использование данных с сервера) и посмотрите, где ваше приложение снова начинает работать нормально, а затем продолжите.

Извините за расплывчатый ответ, но без кода и, возможно, какого-то журнала, очень сложно дать конкретный ответ.

И нет, вам не нужно делать ничего особенного, чтобы справиться с простоями / длительными периодами бездействия.

Вы обязательно должны вызывать super в вашем методе viewWillDisappear(animated:). См. Справочную документацию по классам UIViewController. Также вы можете захотеть подтвердить, почему вы удаляете свой webView из иерархии контроллера представления.

обсуждение

Этот метод вызывается в ответ на удаление представления из иерархии представления. Этот метод вызывается до того, как представление фактически будет удалено, и до того, как настроены какие-либо анимации.

Подклассы могут переопределить этот метод и использовать его для фиксации изменений редактирования, изменения статуса первого респондента представления или выполнения других соответствующих задач. Например, вы можете использовать этот метод, чтобы отменить изменения в ориентации или стиле строки состояния, которые были сделаны в viewDidDisappear: метод, когда представление было впервые представлено. Если вы переопределите этот метод, вы должны вызвать super в какой-то момент вашей реализации.

Другие вопросы по тегам