Controlando as atualizações do NSTEXTVIEW para lidar com o Flicker e melhorar a velocidade
-
26-09-2019 - |
Pergunta
Eu tenho um NSTEXTVIEL subclassem que estou manipulando em um thread separado (usando o performeSelectoronMainthread: withObject: waituntildOne :) usando seletores replacecharactersinRange: withString:, setSelectedRange:, e insertText:. Estou passando por pista de texto e um desempenho ruim à medida que o NSTEXTVIEW atualiza a tela para cada operação.
Alguma sugestão sobre como controlar quando a exibição é atualizada, para que eu possa atualizá -la apenas quando realmente necessária? Tentei usar várias combinações SetNeedsDisplay: não (dos threads principais e de segundo plano, antes e depois das minhas atualizações), que parecem ser ignoradas.
Agradecemos antecipadamente a qualquer pessoa que possa fornecer algumas dicas.
Solução
Eu acho que você deveria estar manipulando o subjacente NSTextStorage
Para a visualização de texto, em vez de invocar os métodos relacionados a eventos da exibição diretamente. Este é um exemplo bastante clássico de uma arquitetura modelo-visualizador: o NSTextView
é a vista e o NSTextStorage
é o modelo. Sempre que possível, você deseja manipular o modelo diretamente e permitir que o controlador/camadas de visualização lide com a atualização da visualização como achar adequada.