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, но я понятия не имею, что именно это означает, поэтому я присоединю трассировку стека.

Любая помощь будет оценена!! Спасибо!!

0 ответов

Другие вопросы по тегам