Tek*_*.ke 5 memory-leaks ios swift3
我的问题是我不确定类方法中的闭包是否会导致内存泄漏.这是我的代码
class func SomeDownloadFun (pdfDirectory:String) {
let destination : DownloadRequest.DownloadFileDestination = {
_, response in
//----------HERE I Reference the item 'pdfDirectory'-----Will this cause leak?
let fileURL = URL(fileURLWithPath: pdfDirectory)
return (fileURL,[.removePreviousFile,.createIntermediateDirectories])
}
let downLoadRequest = Alamofire.download(urlStr!, to: destination)
downLoadRequest.responseData(completionHandler: { (response) in
switch response.result {
case .success:
//----------HERE I Reference the item 'pdfDirectory'-----Will this cause leak?
print("pdfDirectory")
break
case .failure:
print("down err")
break
}
})
Run Code Online (Sandbox Code Playgroud)
}
我已经评论了我认为会导致泄漏的地方,任何人都可以告诉我,谢谢!
一些观察结果:
\n\n仅仅因为您在闭包中引用了一个对象,并不意味着您有一个强引用循环。您需要循环引用(例如,A 对 B 有强引用,B 对 A 有自己的强引用),以便有强引用循环,这不会在这里发生。
\ pdfDirectoryxe2\x80\x99t 甚至不是引用类型(String是 a struct,值类型),因此无论如何,\xe2\x80\x99t 不可能是强引用循环。它\xe2\x80\x99s只会发生在引用类型上(例如class而不是struct)。
即使您引入NSDictionary了对话(引用类型),仅凭这一点还不足以形成强大的引用循环。不要根据某些引用类型的闭包的存在就得出关于强引用循环的结论。找出(或使用“调试内存图”或仪器)给定对象对哪些对象具有强引用,并确定此时是否存在强引用循环。
| 归档时间: |
|
| 查看次数: |
512 次 |
| 最近记录: |