Приложение 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 в какой-то момент вашей реализации.