我的代码显示出奇怪的行为,我搜索了几个小时都没有运气。
我的代码片段:
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 是问题,但我不知道这究竟意味着什么,所以我将附加堆栈跟踪。
任何帮助将不胜感激!!谢谢!!