Я пытался понять, почему numberOfSectionsInTableView вызывается несколько раз при каждом обновлении моего источника данных.Из трассировки стека в gdb я вижу следующее
#0 -[JobPickerTVC numberOfSectionsInTableView:] (self=0x4d61fe0, _cmd=0x6207f5, tableView=0x6034800) at JobPickerTVC.m:153
#1 0x003d66ff in -[UITableViewRowData(UITableViewRowDataPrivate) _updateNumSections] ()
#2 0x003d63b0 in -[UITableViewRowData invalidateAllSections] ()
#3 0x00299010 in -[UITableView(_UITableViewPrivate) _endCellAnimationsWithContext:] ()
#4 0x002891e8 in -[UITableView endUpdates] ()
#5 0x000050c8 in -[JobPickerTVC controllerDidChangeContent:] (self=0x4d61fe0, _cmd=0x17109d, controller=0x4da5e40) at JobPickerTVC.m:442
, за которым следует
#0 -[JobPickerTVC numberOfSectionsInTableView:] (self=0x4d61fe0, _cmd=0x6207f5, tableView=0x6034800) at JobPickerTVC.m:153
#1 0x003d66ff in -[UITableViewRowData(UITableViewRowDataPrivate) _updateNumSections] ()
#2 0x003d6417 in -[UITableViewRowData ensureAllSectionsAreValid] ()
#3 0x0029902e in -[UITableView(_UITableViewPrivate) _endCellAnimationsWithContext:] ()
#4 0x002891e8 in -[UITableView endUpdates] ()
#5 0x000050c8 in -[JobPickerTVC controllerDidChangeContent:] (self=0x4d61fe0, _cmd=0x17109d, controller=0x4da5e40) at JobPickerTVC.m:442
Из того, что я могу сказать, код выполняет [UITableViewRowData invalidateAllSections ](строка № 2 первой трассы), а затем [UITableViewRowData provideAllSectionsAreValid ] (строка № 2 второй трассы).Оба они заканчиваются вызовом [JobPickerTVC numberOfSectionsInTableView:].Так [JobPickerTVC numberOfSectionsInTableView:] вызывается дважды.Я хотел бы знать, почему это происходит и что делают эти операции.
Есть еще один вызов numberOfSectionsInTableView по другой причине, но я хотел бы сначала разобраться в них.