Утечка памяти в Swift 3 URLSession
У меня возникают утечки памяти в сети. URLSession.shared
в быстром 3. Это ошибка или я что-то не так делаю?
override func viewDidLoad() {
super.viewDidLoad()
let urlStr = "https://qrng.anu.edu.au/API/jsonI.php?length=10&type=hex16&size=2"
URLSession.shared.dataTask(with: URL(string: urlStr)!) { data, response, error in
self.view.backgroundColor = UIColor.red
print(response)
}.resume()
}
1 ответ
У сеанса общего URL-адреса есть хранилище учетных данных для файлов cookie и других "браузерных" вещей. Поскольку он является общим, он представляет собой синглтон, который будет жить вечно в вашем приложении. Инструменты интерпретируют это как утечку.
Совет: повторите действие несколько раз, прежде чем искать утечки.
Кроме того, вполне вероятно, что собственная ссылка в вашем обратном вызове удерживает ваш контроллер представления, пока ваш запрос еще не обработан. Используйте слабое Я в начале блока, чтобы разорвать цикл. Но это полностью зависит от вашего дизайна. Это досталось мне хотя бы в нескольких случаях.
Я также хочу сослаться на этот ответ: /questions/43193050/utechka-pamyati-pri-ispolzovanii-nsurlsessiondownloadtaskwithurl/43193051#43193051