Как предотвратить сбой, когда контроллер uiview отключен и активна urlsessiontask

У меня происходит сбой в моем приложении Swift 3 для iOS, когда у меня активная URLSessionTask, и пользователь нажимает кнопку "Назад" и контроллер представления отключен. Я вызываю метод отмены для urlsessiontask в кнопке "Назад", и в это время не происходит никакого сбоя, но когда пользователь возвращается к контроллеру представления, происходит сбой приложения. Если пользователь позволяет завершить задачу сеанса url, сбоя не происходит. Кто-нибудь знает, что я могу сделать, чтобы предотвратить аварию? Я использую iOS 10, Swift 3, Xcode 8. Заранее спасибо.

1 ответ

Решение

Не делайте контроллер представления делегатом сеанса URL, если он может отсутствовать после завершения загрузки.

Вот одно из решений:

Создать DownloadManager Синглтон, являющийся делегатом сеанса URL, сохраняет файлы на диск после завершения загрузки, записывает информацию о загруженном файле и затем уведомляет своего делегата, используя свойство слабого делегата.

(Некоторые люди считают, что синглтоны являются корнем всего зла и никогда не должны использоваться. Я не из тех людей. На мой взгляд, менеджер загрузок всего приложения - отличный пример использования для синглтона.)

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