2011-05-29 63 views
3

我想了解为什么numberOfSectionsInTableView每次更新我的数据源时被多次调用。从gdb的堆栈跟踪,我看到了跟着UITableViewRowData,numberOfSectionsInTableView

#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 ensureAllSectionsAreValid](第二个跟踪的第2行)。这些都通过调用[JobPickerTVC numberOfSectionsInTableView:]结束。所以[JobPickerTVC numberOfSectionsInTableView:]被调用两次。我想知道为什么会这样,以及这些操作在做什么。

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

回答

1

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

相关问题