UIImagePngRepresentation有时会导致内存泄漏

时间:2015-03-07 01:13:32

标签: ios swift memory-leaks uiimagepngrepresentation vmalloc

我的代码显示出奇怪的行为,而且我已经搜索了几个小时而没有运气。

我的代码段:

func loadImageFromLocal(index:String)->UIImage{
        var fileManager = NSFileManager.defaultManager()
        var containerURL = fileManager.containerURLForSecurityApplicationGroupIdentifier("group.mygroup.test")
        var pngNumber=sharedDefaults.objectForKey("png\(index)") as Int
        var filePath = containerURL!.path!+"/img\(pngNumber).png"

        NSLog(filePath)

        var image:UIImage = UIImage(contentsOfFile: filePath)!
        return image
}

...

var image:UIImage?=loadImageFromLocal(button.titleForState(.Normal)!)
var pngImage = UIImagePNGRepresentation(image)

如您所见,我将图像保存到本地文件夹,当我需要它时,我从本地文件夹的加载图像加载它并将其转换为NSData与UIImagePNGRepresentation

奇怪的是,对于某些图像,它按预期工作。但是,对于某些图像,内存不会被解除分配。 (检查分配工具。堆继续上升)

second one is deallocated, first one is alive (see the dot representing it is alive)

看到点意味着第一个还活着? 我查看了历史记录,一旦进展顺利,就应该像enter image description here

一样

对于有问题的图像,就像这样 enter image description here

两个分配,一个dealloc ..我猜这是问题,但我不知道为什么它只发生在特定的图像上。 当我检查堆栈跟踪时,我想这意味着UIImagePNGRepresentation是问题,但我不知道这意味着什么,所以我将附加堆栈跟踪。 enter image description here

任何帮助将不胜感激!谢谢!

0 个答案:

没有答案