有一天,我使用仪器工作时遇到内存泄漏的代码非常简单:
@IBAction func shareSheet(sender: AnyObject) {
let firstActivityItem = "Hello there is a memory leak here..."
let secondActivityItem : NSURL = NSURL(string: "http://www.sample.com/")!
let activityViewController : UIActivityViewController = UIActivityViewController(
activityItems: [firstActivityItem, secondActivityItem], applicationActivities: nil)
activityViewController.popoverPresentationController?.sourceView = (sender as! UIButton)
self.presentViewController(activityViewController, animated: true, completion: nil)
}
上述代码的目标是显示要在社交网络中发布的UIActivityViewController
等
工具 泄漏的屏幕截图:
处理问题我终于解决了,将两个常量firstActivityItem
和secondActivityItem
的声明更改为变量,内存泄漏消失了。
但我的问题是为什么会这样?
为什么使用let
而不是var
声明生成内存泄漏?
答案 0 :(得分:0)