2013-11-07 4 views
3

Создание простого устройства чтения 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"]); 
} 

} 

Любая помощь будет оценена по достоинству. Спасибо, парни.

+0

Попробуйте заменить init на initWithStyle: reuseIdentifier: при создании вашей ячейки - это обычный способ создания экземпляра ячейки. – rdelmar

+0

Вы используете ARC? –

+0

Изменить изменяемый словарь на словарь и проверить? –

ответ

2

По некоторым причинам я не могу добавлять комментарии, но вы должны двигаться

NSMutableDictionary * news = (NSMutableDictionary *)[self.nf.newsStories objectAtIndex:indexPath.row]; 
    [cell.textLabel setText:[news objectForKey:@"title"]]; 

из условного ... и я не знаю, почему вы делаете это изменчиво. Кроме того, изменение инициации клеток к:

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier: cellId]; 

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

+0

Хм. По-прежнему бросает ту же ошибку. Интересно, проблема в моей реализации NewsFeed. Благодарим за предложения. – aspalding

+0

Ваше исправление исправлено! Спасибо, сэр. – aspalding

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