Mi piacerebbe che il mio view-based-NSTableview non riutilizzi TableCellViews generate in precedenza che sono fuori dallo scope. Immagino che ciò sarebbe possibile con UITableView sovrascrivendo dequeueReusableCellWithIdentifier: restituire nil. C'è una soluzione simile per NSTableView?Come rendere NSTableView non riutilizza TableCellViews
-
mio background: ho un bel complesso a base di visione-tableView legati alla ManagedObjects nel solito modo (cioè tabella di contenuti, -Selezione e -sortdescriptor sono legati a un arraycontroller ei tableCellView elementi associare all'oggetto Value).
La tabella ha circa 20 colonne ma al massimo 400 righe. Lo scrolling è molto lento, ma il time-profiling indica che non esiste un'unica fonte di lentezza (il più grande singolo metodo-la chiamata richiede circa il 5% del tempo). Dopo aver memorizzato nella cache le proprietà derivate/personalizzate del mio ManagedObject senza un notevole incremento delle prestazioni, sto cercando di memorizzare nella cache le visualizzazioni (per evitare il rebind frequente delle tablecellViews quando una vista entra in ambito).
Quello che sto cercando al momento è di non legare il contenuto della tabella, ma di ottenere le mie viste usando il protocollo NSDatasource. Lì, nel
-(NSView*) tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
Vorrei tornare TableCellViews cache se esistono. In caso contrario, crea un nuovo uno via
[self.table makeViewWithIdentifier:... owner:self];
Dal makeViewWithIdentifier può restituire una vista che sono già memorizzati nella cache da me, il tavolo-contenuto viene incasinato con le cellule sbagliate.
performance è significativamente migliore di questo approccio ...
-
Altre idee su come rendere più performante scrolling sono anche appriciated.
Sarei interessato a sapere se si è da qualche parte con questo. Penso di avere il problema opposto in quanto il mio NSTableView è * non * riutilizzando le celle per qualche motivo. Ho provato PXListView, ma questo ha avuto prestazioni peggiori e un sacco di bug, quindi mi piacerebbe rimanere con NSTableView ma capire come renderli le viste cache che penso che dovrebbe fare. Per quanto riguarda il tuo problema, potresti creare un identificativo univoco per ciascuna vista o che causerà un terribile utilizzo della memoria? – danpalmer