它是否会在快速类方法中导致内存泄漏

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)

}

我已经评论了我认为会导致泄漏的地方,任何人都可以告诉我,谢谢!

Rob*_*Rob 2

一些观察结果:

\n\n
    \n
  1. 仅仅因为您在闭包中引用了一个对象,并不意味着您有一个强引用循环。您需要循环引用(例如,A 对 B 有强引用,B 对 A 有自己的强引用),以便有强引用循环,这不会在这里发生。

  2. \n
  3. \ pdfDirectoryxe2\x80\x99t 甚至不是引用类型(String是 a struct,值类型),因此无论如何,\xe2\x80\x99t 不可能是强引用循环。它\xe2\x80\x99s只会发生在引用类型上(例如class而不是struct)。

  4. \n
\n\n

即使您引入NSDictionary了对话(引用类型),仅凭这一点还不足以形成强大的引用循环。不要根据某些引用类型的闭包的存在就得出关于强引用循环的结论。找出(或使用“调试内存图”或仪器)给定对象对哪些对象具有强引用,并确定此时是否存在强引用循环。

\n