2017-04-02 2 views
0

アクティブなURLSessionTaskがあり、ユーザーが戻るボタンを押して、ビューコントローラーを選択すると、Swift 3 iOSアプリケーションにクラッシュしました。戻るボタンのurlsessiontaskでcancelメソッドを呼び出し、その時点でクラッシュは発生しませんが、ユーザーがView Controllerに戻ると、アプリケーションがクラッシュします。ユーザーがURLセッションタスクの完了を許可した場合、クラッシュは発生しません。クラッシュを防ぐために私が何ができるか誰にでも分かっていますか?私はiOS 10、Swift 3、Xcode 8を使用しています。事前に感謝します。uiviewcontrollerが登録されていて、アクティブなurlsessiontaskがあるときのクラッシュを防止する方法

+1

先頭にコールバッククロージャ '[weak self]'を追加し、selfがnilであるかどうかを尋ねます –

答えて

1

ダウンロードが完了したときに表示コントローラがURLセッションの代理人になっていない可能性があります。

はここに1つのソリューションです:

はURLセッションのデリゲートであるDownloadManagerシングルトンを作成し、ダウンロードが完了すると、ディスクにファイルを保存し、ダウンロードされたファイルに関する情報を記録し、その後、を通知してデリゲート。弱いデリゲートプロパティを使用します。

(シングルトンはすべての悪の根源であり、決して使用されるべきではないと信じている人もいますが、私はその人の一人ではありません。 )

関連する問題