Память UIImageView увеличивается при первом изменении изображения - PullRequest
0 голосов
/ 03 сентября 2018

Демонстрационный проект -

У меня есть UIImageView и три кнопки.

Всякий раз, когда я нажимаю любую кнопку, я меняю изображение вида изображения. Мои изображения имеют размер 1242 * 1242.

Проблема: каждый первый раз, когда я нажимал кнопку, потребовалось 5 МБ памяти. Например, я нажал кнопку 1, объем памяти увеличился на 5 МБ, а затем я нажал кнопку 2, объем памяти увеличился на 5 МБ. Но когда я снова нажал кнопку 1, память не увеличилась.

Это обычное поведение UIImage View? На самом деле, я работаю над фоторамками и каждый раз, когда применяю новые кадры, память увеличивается. Из-за этого после применения 30-40 кадров приложение вылетает.

Может кто-нибудь рассказать, как работать с такими типами приложений для фоторамок, или по какой-либо причине, почему UIImagesView забирает память?

Заранее спасибо!

1 Ответ

0 голосов
/ 03 сентября 2018

Да @ Amanpreet, у меня тоже такое же поведение. При исследовании инструмента я обнаружил, что некоторый кусок памяти, как ImageIO-jpeg-data выделяется каждый раз, когда я загружаю новое изображение при нажатии кнопки.

--------------------- РЕШЕНИЕ ---------------------- -------

Загрузить изображение в imageView с помощью

UIImage(contentsOfFile: filePath!)

метод. И теперь ваш объем памяти не будет увеличиваться каждый раз с новым изображением.

ПРИМЕРНЫЙ КОД

@IBAction func loadOne(_ sender: UIButton) {
    let filePath = Bundle.main.path(forResource: "1", ofType: "jpg")
    imageView.image = UIImage(contentsOfFile: filePath!)
}

@IBAction func loadTwo(_ sender: UIButton) {
    let filePath = Bundle.main.path(forResource: "2", ofType: "jpg")
    imageView.image = UIImage(contentsOfFile: filePath!)

}

@IBAction func loadThree(_ sender: UIButton) {
    let filePath = Bundle.main.path(forResource: "3", ofType: "jpg")
    imageView.image = UIImage(contentsOfFile: filePath!)
}

Я использую изображения размером 1920 * 1280, Ранее мое использование памяти увеличивается как 41,6 МБ , 51,5 МБ , 59,5 МБ , 67,5 МБ , после каждого клика, но после принятия решения, указанного выше, использование памяти застряло на 50,4 МБ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...