Получение исключений при использовании изображений большого пальца из Интернета с ячейками iphone tableviews - PullRequest
1 голос
/ 07 января 2011

Я совершенно новичок в разработке для iphone и цели c, уже 15 лет являюсь разработчиком на c ++, так что это не так уж и чуждо мне, поэтому держитесь за меня, пока я пытаюсь объяснить свою проблему.

Я часами искал в Интернете и читал книги, но, похоже, никто не нашел ответа.

У меня есть развернутые таблицы категорий и продуктов, они загружаются из словарей, которые были заполнены из JSON посредством запроса к веб-службе, проблем нет, все работает нормально и отображает текст по мере необходимости, а навигация работает как ожидается.

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

как ...

*** -[UIImage isKindOfClass:]: message sent to deallocated instance 0x5f94b90

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

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

В любом случае, вот код для загрузки ячейки, я предполагаю, что вы, ребята, понимаете класс tableview и эту функцию.

Ура, Даррен

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *ProductCellIdentifier = @"ProductCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ProductCellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ProductCellIdentifier] autorelease];
    }

    // Configure the cell...
    NSInteger row = [indexPath row];

    // get data from dictionary for index
    NSDictionary *rowData = [self.productsDict objectAtIndex:row];

    // load image and display
    NSString *imgUrl = [rowData valueForKey:@"image_url"];
    NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:imgUrl]];
    UIImage *image = [UIImage imageWithData:imageData];         
    cell.imageView.image = image;

    cell.textLabel.text = [rowData valueForKey:@"name"];
    return cell;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...