2011-05-29 52 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的所有代表。

相關問題