Я использую [слабое я] в dataSask URLSession при установке свойств экземпляра? - PullRequest
0 голосов
/ 03 июня 2019

Я не уверен, стоит ли мне использовать [weak self] здесь, есть ли у меня проблема с памятью, когда я устанавливаю массив struct, если нет?

URLSession.shared.dataTask(with: url) { (data, response, error) in

            if let error = error {
                self.showErrorAlertMessage(message: error.localizedDescription, title: "Some error")
                return
            }

            guard let data = data else { return }

            guard let httpResponse = response as? HTTPURLResponse else { return }

            if (httpResponse.statusCode == 200) {
                do {
                    let decodedResponse = try JSONDecoder().decode(CodableStruct.self, from: data)
                    self.structArray = decodedResponse.results
                } catch {
                    self.showErrorAlertMessage(message: error.localizedDescription, title: "Some error")
                    print("Error:\(error)")
                }
            } else {
                self.showErrorAlertMessage(message: "Some error", title: "error")
            }
            DispatchQueue.main.async {
                self.tableView.reloadData()
            }
            }.resume()
    }

1 Ответ

1 голос
/ 03 июня 2019

Да, лучше использовать [weak self] здесь.

Если вы не используете, блок будет удерживать сильную ссылку на self до тех пор, пока не будет вызван, поэтому он может задержать освобождение self, но это не вызовет memory leak, так как self не имеет строгой ссылки на это dataTask.

...