Google не показывает никаких сообщений для этого сообщения об ошибке.Я получаю это в iOS 5, пытаясь обновить UITableView.Хотя точный код немного замучен, это то, что я делаю с таблицей и NSMutableArray, который имеет данные таблицы.Вызовы выполняются из основного потока через вызовы executeSelectorOnMainThread, как указано в фрагментах кода ниже.Разделы NSMutableArray - это массив массивов, каждый из которых представляет раздел, где эти вторичные массивы представляют собой строки NSSt с текстом, который появляется в таблице.
От основного потока:
[table performSelectorOnMainThread: @selector(beginUpdates) withObject: nil waitUntilDone: YES];
Основной код, вызываемый из другого executeSelectorOnMainThread:
// Make sure the requested section exists.
if (sections == nil)
sections = [[NSMutableArray alloc] init];
while (section >= [sections count]) {
NSMutableArray *newArray = [[NSMutableArray alloc] init];
[sections addObject: newArray];
[table insertSections: [NSIndexSet indexSetWithIndex: [sections count]]
withRowAnimation: UITableViewRowAnimationNone];
}
// Insert the new row in the section.
NSMutableArray *rowArray = [sections objectAtIndex: section];
if (row > [rowArray count])
row = [rowArray count];
[rowArray insertObject: cellString atIndex: row];
[table insertRowsAtIndexPaths: [NSArray arrayWithObject: [NSIndexPath indexPathForRow: row inSection: section]]
withRowAnimation: UITableViewRowAnimationNone];
Вызывается после завершения вышеуказанного кода:
[table performSelectorOnMainThread: @selector(endUpdates) withObject: nil waitUntilDone: YES];
Произошла ошибка при этом вызове endUpdates.Точное сообщение об ошибке:
2012-01-04 14:28:10.951 myApp[2183:fb03] *** Assertion failure in -[UITableViewRowData rectForSection:], /SourceCache/UIKit_Sim/UIKit-1912.3/UITableViewRowData.m:1449
2012-01-04 14:28:10.953 myApp[2183:fb03] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'request for rect of invalid section (1)'
*** First throw call stack:
(0x1833052 0x1d94d0a 0x17dba78 0x11472db 0x99c832 0xa1b93b 0xa1b886 0xa1b451 0xa28134 0x8458e1 0x842602 0x84d211 0x84d23f 0x1834e72 0x10d69ef 0x180797f 0x176ab73 0x176a454 0x1769db4 0x1769ccb 0x33b6879 0x33b693e 0x7bea9b 0x1fad 0x1f25)
terminate called throwing an exception
Что означает эта ошибка, и что мне нужно изменить, чтобы ее избежать?