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