У меня есть UITableView на одном из моих контроллеров представления, он обновляется с сообщениями журнала от нескольких частей моего приложения, асинхронно.Это работало нормально, но сегодня я заметил странную ошибку.Примерно через 2 часа все табличные представления стали пустыми.там нет ячеек, нет разделителей строк, только цвет фона.
В этом табличном виде есть только 2 пути ввода.
NSMutableArray* tableViewCellData;
//in the init method:
tableViewCellData = [[NSMutableArray alloc]initWithCapacity:15];
-(void)setContextActionWithTitle:(NSString *)title description:(NSString *)description
ContextConsoleLogItem* temp = [[ContextConsoleLogItem alloc] initWithDate:[NSDate date] title:title message:description contextAction:kNoContextAction];
[tableViewCellData insertObject:temp atIndex:0];
[contextActionTableView reloadData];
}
//pretty standard data source management
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return kNumberOfSections;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
return [tableViewCellData count];
}
//here's how the cell displays itself.
#pragma mark -
#pragma mark Cell customization
-(void)configureCell:(UITableViewCell*) cell atIndexPath:(NSIndexPath*) indexPath
{
ContextConsoleLogItem* logItem = [tableViewCellData objectAtIndex:indexPath.row];
cell.backgroundColor = [UIColor blackColor];
cell.textLabel.textColor = [UIColor whiteColor];
cell.textLabel.font = [UIFont systemFontOfSize:9];
cell.detailTextLabel.textColor = [UIColor whiteColor];
cell.textLabel.text = logItem.message;
cell.textLabel.numberOfLines =3;
}
Что может быть причиной того, что табличное представление "потеряло" все свои данные и перестало отвечать на
-(void)setContextActionWithTitle:(NSString *)title description:(NSString *)description
Я подозреваю, что NSMutableArray был выделен с недостаточной емкостью.Это достигнет максимальной производительности довольно быстро.Некоторые сообщения, отправленные описанным выше способом, поступают от звонков на performSelectorInBackground
.Может ли быть так, что один из моих селекторов фона использует емкость NSMutableArray и не может перераспределить его?Но опять же, даже у пустого табличного представления должны быть ячейки, поэтому я должен видеть разделители строк.
Должен ли я обернуть мои вызовы в setContextActionWithTitle:description:
с помощью performSelectorOnMainThread
?
Может быть, было сделано 2 отдельных вызова для обновления представления таблицы и как-то они ушлитаблица в несогласованном состоянии?(Я не получаю никаких исключений здесь)
Это очень загадочное поведение, и я был бы признателен за любую помощь в его отладке!