UIImagePngRepresentation иногда вызывает утечку памяти
Мой код показывает странное поведение, и я искал часы без удачи.
Мой фрагмент кода:
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
Странная вещь, для некоторого изображения, это работает, как я ожидал. Однако для некоторого изображения память не будет освобождена. (Проверено с помощью инструмента Allocation. Куча продолжает расти)
Видите точку, означающую, что первый еще жив? Я проверил историю, и когда все идет хорошо, должно быть так
Для проблемного изображения, это так
Два alloc, один dealloc.. Я думаю, что это проблема, но я не знаю, почему это происходит только для определенного изображения. Когда я проверяю трассировку стека, я предполагаю, что это означает, что проблема связана с UIImagePNGRepresentation, но я понятия не имею, что именно это означает, поэтому я присоединю трассировку стека.
Любая помощь будет оценена!! Спасибо!!