内存泄漏声明常量

时间:2015-05-04 20:25:46

标签: ios swift memory-leaks instruments

有一天,我使用仪器工作时遇到内存泄漏的代码非常简单:

@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

  

工具 泄漏的屏幕截图:

enter image description here

enter image description here

处理问题我终于解决了,将两个常量firstActivityItemsecondActivityItem的声明更改为变量,内存泄漏消失了。

但我的问题是为什么会这样?

为什么使用let而不是var声明生成内存泄漏?

1 个答案:

答案 0 :(得分:0)

最好的选择,这是一个可以在更新中解决的Swift问题。

字符串是在编译时创建的,并放在数据段中,永远不需要复制一个副本。

请提交错误报告:http://bugreport.apple.com