UIImage вернуть ноль на некоторых изображениях? - PullRequest
0 голосов
/ 18 мая 2011

В моем приложении около 500 изображений.

Во-первых, это плохо? Как еще их можно хранить?

Во-вторых, когда я загружаю их следующим образом:

for (int i=0; i < [imageArray count]; i ++)
{
    IngredientObject * o = ((ImageObject*)[imageArray objectAtIndex:i]);
    UIImage * img = [UIImage imageNamed:o.imageName];
    .
    .
    .
}

Иногда возвращается ноль. Я предполагаю, что это проблема памяти, поскольку она не происходит на симуляторе, только на реальном устройстве. Каждое изображение маленькое ... от 10k до 20k каждое, но все равно получается около 10мг. Я не думал, что это будет проблемой на устройстве 16 ГБ.

Было бы лучше не использовать imageNamed: и использовать imageWithContentsOfFile или какой-либо другой метод. Эти изображения в конечном итоге находятся в UIScrollerView, и я не уверен, как мне будет загружать их по мере необходимости, потому что я беспокоился о производительности прокрутки, если бы пришлось загружать изображения динамически.

Любая помощь приветствуется.

Спасибо

1 Ответ

1 голос
/ 18 мая 2011

Не обязательно иметь 500+ изображений, если вы правильно управляете памятью. По моему опыту, imageWithCOntentsOfFile: кажется намного быстрее, чем imageNamed:.

Что касается производительности UIScrollView, то обработка только нескольких изображений за раз гарантирует, что прокрутка не будет задерживаться или прерываться.

Что касается устройства 10МГ и 16ГБ, это совершенно не имеет значения. iPhone 3GS имеет около 128 МБ БЕСПЛАТНОЙ ПАМЯТИ; iPhone 4 имеет около 300 МБ + примерно в зависимости от того, что у вас работает в фоновом режиме.

Похоже, что вы пытаетесь загрузить все 500 изображений в ScrollView, это может быть причиной того, что вы получаете пустые изображения, что приводит к нехватке памяти.

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