2013-09-30 1 views
1

Мое приложение имеет UITableView. Я использую пользовательские ячейки, которые имеют lable и UIImage. Его работа отлично подходит для нормальной прокрутки. Но если я прокручу это в течение длительного времени, изображения исчезнут. И было error = 24 (to many open files) in console.Изображения в виде таблицы исчезают после прокрутки для времени входа в систему

От Google я получил это вместо использования UIImage imageNamed, использовано initWithContentOfFile. Но эта доза не работает. Пожалуйста помоги.


Редактировать Добавление кода, написанного в комментарии:

Это код используется для добавления изображения в ячейку:

UIImage *img =[[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"sms_icon" ofType:@"png"]]; [cell.img setImage:img]; [img release]; 

+0

Оставьте свой код. В частности, что бы вы ни делали в cellForRowAtIndexPath: также объясните, что вы подразумеваете под «после долгого времени». – Stavash

+0

Как вы добавляете изображения в ячейку. Pls предоставляет код, написанный в cellForRowAtIndexPath –

+0

Я использовал ниже строки для установки изображения. [cell.img setImage: [UIImage imageNamed: @ "sms_icon.png"]]; Но это не сработало, поэтому я использовал следующий код: UIImage * img = [[UIImage alloc] initWithContentsOfFile: [[NSBundle mainBundle] pathForResource: @ "sms_icon" ofType: @ "png"]]; [cell.img setImage: img]; [img release]; – user2618646

ответ

0

The documentation says

Способ (+ ImageNamed :) смотрит в системные кеши для воображения e с указанным именем и возвращает этот объект, если он существует. Если соответствующий объект изображения еще не находится в кеше, этот метод загружает данные изображения из указанного файла, кэширует его и затем возвращает результирующий объект.

На устройстве, работающем под управлением iOS 4 или более поздней версии, поведение идентично, если экран устройства имеет шкалу 1,0. Если на экране установлен масштаб 2.0, этот метод сначала ищет файл изображения с тем же именем файла с приложенным к нему суффиксом @ 2x. Например, если имя файла является кнопкой, оно сначала ищет кнопку @ 2x. Если он находит 2x, он загружает это изображение и устанавливает свойство scale возвращаемого объекта UIImage равным 2.0. В противном случае он загружает немодифицированное имя файла и устанавливает для свойства scale значение 1.0. На iOS 4 и более поздних версиях, если файл находится в формате PNG, нет необходимости указывать расширение имени файла .PNG. Перед iOS 4 вы должны указать расширение имени файла. Если у вас есть файл изображения, который будет отображаться только один раз, и вы хотите убедиться, что он не добавляется в кеш системы, вы должны создать свое изображение с помощью imageWithContentsOfFile :. Это позволит сохранить одноразовый образ из кеша системы, что потенциально улучшит характеристики использования вашего приложения.

+0

Я пробовал использовать imageWithContentsOfFile insted imagednamed. Но я получаю следующую ошибку и изображения исчезают с экрана. : ImageIO: CGImageReadCreateDataWithMappedFile 'open' failed '/ Библиотека/Поддержка приложений/iPhone Simulator/7.0-64/Applications/D891AC4C-F865-472C-AC5D-AE607AE7D985/eVoice_US.app/[email protected] ' \t error = 24 (Слишком много открытых файлов) – user2618646

+0

imagednamed можно использовать правильно? – iGo

+0

Результат такой же как для imagedname. – user2618646

Смежные вопросы