этот код работает нормально, пока я не начну прокручивать:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
Route *r = [data routeForDay:day index:indexPath.row];
cell.textLabel.text = r.name;
cell.imageView.image = r.image;
return cell;
}
Он отлично работает для каждой строки, пока я не прокручиваю вниз, когда происходит сбой с objc_msgsend на cell.imageView.image = r.image; Я подтвердил, что ничто не ноль, я даже проверил retainCount для всего, что связано. Я в полном недоумении, есть идеи? Спасибо.
Edit:
Я решил проблему, но не понимаю, как из-за изменений в коде ошибка исчезла, поэтому я буду признателен за подсказку, если кто-нибудь знает.
Так было изначально создано изображение в методе инициализации Route. изображение стало освобождаться при прокрутке таблицы в моем контроллере просмотра таблиц.
NSString *imagePath = [[NSBundle mainBundle] pathForResource:[dict valueForKey:@"image"] ofType:@"png"];
image = [UIImage imageWithContentsOfFile:imagePath];
Когда я изменил вторую строку на
image = [[UIImage alloc] initWithContentsOfFile:imagePath];
все работало нормально.
Я просто немного смущен и несчастен.