2012-04-19 5 views
0

Это довольно простой интерфейс, который обрабатывает только приложение appdelegate и viewcontroller.UITableView сбой без ошибок

У меня есть UITableView, который отображает от 1 до 13 изображений превью для указанного пациента. Я использую пользовательскую ячейку, содержащую один UIImageView для отображения больших пальцев. UIImageView в ячейке загружается в cellForRowAtIndexPath из NSMutableArray, который был загружен через HTTP-запрос.

Пальцы для каждого пациента на HTTP-сервере находятся в папке пациента, сгруппированы в 1-3 папки с именами серий. Когда пациент выбирается из popOver на iPad, в представлении таблицы больших пальцев загружается первая серия, найденная в папке пациентов на HTTP-сервере.

Пользователь может затем выбрать другую серию для пациента из popOver серийных имен. В это время большие пальцы для выбранной серии извлекаются по HTTP-запросу и загружаются в представление таблицы больших пальцев.

Все работает отлично, за исключением того, что у меня есть 1 пациент, где первая серия, полученная после выбора пациента из пациента popOver, работает, но изменение серии или повторная выборка уже загруженной серии приводит к сбою приложения. Это не сбой в симуляторе, а только iPad. Когда вы запускаете из xCode, я вижу, что авария происходит после того, как последний вызов cellForRowAtIndexPath заканчивается без каких-либо ошибок, отображаемых в консоли. Если я пройду мимо этого момента, он немедленно сработает.

Я реализовал методы делегирования памяти в методах appdelegate и viewController. Я не получаю никаких предупреждений о памяти.

Я отправляю свой метод cellForRowAtIndexPath ниже, на всякий случай, когда я теряю что-то при загрузке таблицы.

Я ищу предложения о том, что еще можно подозревать помимо памяти. Есть ли способ получить представление о том, что приводит к сбою без консоли?

Заранее спасибо за любую помощь

Джон

Update: Я добавил свое количество строк в методе раздела, который не должен быть проблемой.

Теперь я убежден, что проблема не обязательно связана с моим кодом, а с изображениями. За исключением этого одного пациента, я могу менять пациентов и/или серии изображений пациентов в течение всего дня без каких-либо проблем. Что-то об одном или нескольких изображениях, связанных с этим пациентом, есть в iPad. У каждого пациента есть 1 или 2 рентгена, первоначальный размер которых составляет от 1 до 2 мегабайт. Я уменьшаю их размер файла (качество сжатия) до менее 300 кб при сохранении их на дисковые файлы для извлечения iPad. Общее количество, импортируемое в одну серию, составляет не более 1,5 МБ. По крайней мере, это общий размер файла диска. Я не знаю, что на самом деле происходит с размером файла, как только iPad их получит.

Есть ли способ проверить импортированные изображения для размера или повреждения, прежде чем загружать их в представление таблицы для отображения?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    ImageCell *cell = [thumbsTableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (cell == nil) { 
     cell = [[[ImageCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } 

    cell.pImage.image = [thumbsArray objectAtIndex:indexPath.row]; 
    return cell; 
} 


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [thumbsArray count]; 

} 
+0

Проверьте размер 'thumbsArray' и сравните с' tableView: numberOfRowsInSection: '. Возможно, вам захочется опубликовать еще кое-что из этого кода, чтобы люди могли посмотреть. – greg

+0

numberOfRowsInSection не должно быть проблемой, так как он возвращает значение thumbsArray. Я уверен, что моя проблема связана с памятью из-за того, что изображения либо большие, либо я неправильно управляю ими. Есть ли способ проверить размеры изображений? – user278859

+0

Я добавляю свой вопрос относительно тестирования изображения на главный вопрос. – user278859

ответ

0

Вы пытались установить некоторые точки останова для отладки? Из кода, который вы опубликовали, я не видел никаких проблем. Вы включили NSZombie?

+0

точки останова, да, NSZombie no. Я забыл про это. Благодарю. – user278859

+0

Я ценю ваше предложение. Я добавил вопрос к моему первоначальному вопросу относительно тестирования изображений на iPad, поскольку, как я думаю, я получаю что-то неожиданное для этого пациента. Если у вас есть время, возможно, вы сможете помочь в этом новом вопросе. – user278859

+0

Изображения - это файлы, я думаю, вы можете использовать NSFileManager для получения размера изображения. – Jason

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