我在swift 3中对URLSession.shared的网络调用中有内存泄漏。这是一个错误还是我做错了什么?
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()
}

发布于 2017-03-14 15:43:58
共享URL会话有一个存储cookie和其他“浏览器”内容的凭据存储。因为它是共享的,所以它是一个单例,将永远存在于您的应用程序中。Instruments将此解释为泄漏。
建议:在查找漏洞之前,请多次重复此操作。
而且,回调中的self引用很可能会在您的请求仍处于挂起状态时保留您的视图控制器。在方块开始处使用弱自我来打破循环。但这完全取决于你的设计。它至少在几个案例中得到了我的支持。
我还想参考一下这个答案:https://stackoverflow.com/a/35757989/3351794
https://stackoverflow.com/questions/42780244
复制相似问题