1

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

我的代码片段:

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)

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

奇怪的是,对于某些图像,它按我的预期工作。但是,对于某些图像,内存不会被释放。(用分配工具检查。堆不断上升)

第二个被释放,第一个是活着的(看代表它是活着的点)

看到第一个还活着的点了吗?查了一下历史,顺利的话应该是这样的在此处输入图像描述

对于有问题的图像,是这样的 在此处输入图像描述

两个alloc,一个dealloc ..我想这是问题,但我不知道为什么它只发生在特定图像上。当我检查堆栈跟踪时,我想这意味着 UIImagePNGRepresentation 是问题,但我不知道这究竟意味着什么,所以我将附加堆栈跟踪。 在此处输入图像描述

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

4

0 回答 0