Создание простого устройства чтения RSS-каналов с шаблоном мастер-просмотра, предоставленным XCode (4.6).Проблемы с табличным представлением и освобожденным экземпляром
Приложение загружает первый экран, полный заголовков, затем при прокрутке вниз или вверх он выдает ошибку с ошибкой.
Ошибка я получаю в консоли:
[__NSArrayM retain]: message sent to deallocated instance 0x7522d40
След ведет меня к этой линии в моей функции cellForRowAtIndex. XCode отмечает эту строку как сигнал SIGKILL. (Это может быть связано с тем, что я установил объекты зомби в соответствии с инструкцией из учебника по отладке).
NSMutableDictionary * news = (NSMutableDictionary *)[self.nf.newsStories objectAtIndex:indexPath.row];
Вот остальная часть этой функции.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString * cellId = @"feeds";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: cellId];
if(cell == nil){
cell = [[UITableViewCell alloc] init];
NSMutableDictionary * news = (NSMutableDictionary *)[self.nf.newsStories objectAtIndex:indexPath.row];
[cell.textLabel setText:[news objectForKey:@"title"]];
}
return cell;
}
Это моя функция viewDidLoad.
- (void)viewDidLoad
{
[super viewDidLoad];
self.nf = [[NewsFeed alloc]init];
[self.nf setFeedURL:[NSURL URLWithString:@"http://rss.cnn.com/rss/cnn_topstories.rss"]];
[self.nf retrieveFromInternet];
//For debugging.
for(id newsItem in self.nf.newsStories){
NSDictionary * d = (NSDictionary *)newsItem;
NSLog(@"Title: %@\nDescription: %@", [d objectForKey:@"title"], [d objectForKey:@"description"]);
}
}
Любая помощь будет оценена по достоинству. Спасибо, парни.
Попробуйте заменить init на initWithStyle: reuseIdentifier: при создании вашей ячейки - это обычный способ создания экземпляра ячейки. – rdelmar
Вы используете ARC? –
Изменить изменяемый словарь на словарь и проверить? –