我一直在Google上搜索這個主題,但似乎沒有找到解決這類問題的共識。當我使用帶有NSTableView的數據源時,如果我需要在後臺填充數據源,那麼在我的腦海中會出現一些關於線程的問題。我希望能在這裏得到一些指導。和:如果我修改了主線程調用[NSTableView的numberOfRowsInTableView]之間的數據源異步更新NSTableView數據源
會發生什麼[NSTableView的的tableView:objectValueForTableColumn:行:]?如果表視圖所要求的對象不再有效,我該怎麼辦?
僅在主線程上對數據源進行更改才能解決此情況?
如果2是答案,它是否適用於使用綁定的情況?
格雷厄姆,從概念上說我明白你在說什麼。但在我看來,我修改數據源和調用[tableView reloadData]是關鍵。例如:1)主線程調用[NSTableView numberOfRowsInTableView:],2)我清理另一個線程的數據源,3)主線程調用[NStableView tableView:objectValueForTableColumn:row:],索引不再有效。 4)調用[tableView reloadData]。 – mr49
對,所以要避免這個問題。你的數據源可能有兩個數組,currentData和incomingData。響應表格視圖時始終使用currentData。一旦incomingData完成,將其分配給currentData並告訴表重新加載。分配和重新加載的調用之間沒有「中間」,因此表視圖保持一致。 –