Я вызываю URLSession.share.datatask и, прежде чем он может завершить, пользователь выскакивает контроллер uiview
Я не уверен, как предотвратить ошибку в моем приложении. Мне нужно вызвать сервер, используя URLSession.shared.dataTask, который прекрасно работает, если я позволю ему завершить. Тем не менее, если я вытолкну uiviewcontroller из стека до того, как URLSession.shared.dataTask завершит работу, произойдет ошибка времени выполнения, потому что viewcontroller больше не существует. Это происходит в разных местах при разборе json и сетевых вызовах. Обычно при обратном вызове или отображении ошибки в случае сбоя сетевого вызова. Кто-нибудь знает, как остановить сетевой вызов, когда контроллер uiview отключается, или обнаружить в коде сетевого вызова, что контроллер uiview исчез, поэтому я не вызываю обратный вызов. Я использую Xcode 8 и iOS 10 с Swift 3. Спасибо.
1 ответ
Прежде, чем вы откроете свой VC, позвоните этим:
[dataTask cancel]
dataTask = nil // if needed
(вам может понадобиться конвертировать o Swift, так как они в Obj-c, но вы поняли)
Если вы хотите, вы также можете определить, является ли это последним VC, который вы щелкаете, и сделать это в соответствии с viewWillDisappear
метод, если хотите.