Я совершенно новичок в разработке для 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;
}