我不确定我是否应该在这里使用[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()
}
答案 0 :(得分:1)
是的,最好在这里使用[weak self]
。
如果不使用,该块将对self
保持强烈引用,直到被调用为止,因此它可能会延迟self
的发布,但不会导致{{ 1}},因为memory leak
没有对此self
进行严格引用。