Сокращение использования памяти UIImage - PullRequest
1 голос
/ 26 ноября 2011

Я пытаюсь найти способы сократить использование памяти для моего приложения прямо сейчас, и у меня есть идея относительно UIImages.Я довольно широко использую UIImages, некоторые из которых являются общими для нескольких представлений.Является ли намного более эффективным использование памяти для создания одного UIImage и последующего использования указателя на это изображение в приложении, а не для выделения нового UIImage для одного и того же изображения в каждом представлении?Или операционная система достаточно умна, чтобы автоматически сортировать UIImage, чтобы он хранился в памяти только один раз?(сомневаюсь, что это так, но я должен спросить)

Спасибо.

Ответы [ 4 ]

3 голосов
/ 26 ноября 2011

Прямо из Справочная документация по яблоку UIImage для imageNamed:

Этот метод ищет в системных кэшах объект изображения с указанным именем и возвращает этот объект, если он существует,Если соответствующий объект изображения еще не находится в кэше, этот метод загружает данные изображения из указанного файла, кэширует его и затем возвращает полученный объект.

1 голос
/ 26 ноября 2011

Вы используете много изображений, поэтому помните, что [UIImage imageNamed:@""]; кэширует изображения, поэтому, если у вас проблема с нехваткой памяти, используйте [UIImage imageWithContentsOfFile:@""];, которая не кэширует ее. Может быть, это поможет вам сократить использование памяти.

0 голосов
/ 26 ноября 2011

Когда представление выгружается, задайте для свойств GUI значение nil в методе viewDidUnload подклассов UIViewController.

0 голосов
/ 26 ноября 2011

Да, более эффективно хранить один UIImage и использовать на него указатели.

Маловероятно, что ОС кэширует образы таким образом, и даже если бы это было так, использование указателей дает вам более точный контроль, когда образ освобождается / освобождается, так что вам не нужно надеяться, что ОСсобирается позаботиться об этом.

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