UITableViewRowData,numberOfSectionsInTableView

UITableViewRowData,numberOfSectionsInTableView,uitableview,Uitableview,我试图理解为什么每次更新数据源时都会多次调用numberOfSectionsInTableView。从gdb中的堆栈跟踪中,我看到了以下内容 #0 -[JobPickerTVC numberOfSectionsInTableView:] (self=0x4d61fe0, _cmd=0x6207f5, tableView=0x6034800) at JobPickerTVC.m:153 #1 0x003d66ff in -[UITableViewRowData(UITableViewRowDa

我试图理解为什么每次更新数据源时都会多次调用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
据我所知,代码执行[UITableViewRowDatainvalidateAllSections](第一个跟踪的第2行),然后执行[UITableViewRowData确保ReallSectionsRevalid](第二个跟踪的第2行)。这两种方法都通过调用[JobPickerTc numberOfSectionsInTableView:]来结束。因此[JobPickerTc numberOfSectionsInTableView:]被调用了两次。我想知道为什么会发生这种情况,以及这些行动在做什么


由于另一个原因,还有一个对numberOfSectionsInTableView的调用,但我想先了解一下这些

您的table numberOfSectionsInTableView被多次调用,因为您正在重新加载表数据。每当您重新加载表时,此方法将检查tableview的所有委托