J'ai un NSTextView sous-classé que je manipule dans un fil séparé (using performSelectorOnMainThread: withObject: waitUntilDone :) en utilisant des sélecteurs replaceCharactersInRange: withString :, setSelectedRange :, et insertText :. Je suis confronté à un scintillement de texte et à de mauvaises performances car NSTextView met à jour l'affichage pour chaque opération.contrôle des mises à jour NSTextView pour gérer le scintillement et améliorer la vitesse
Des suggestions sur la façon de contrôler quand l'affichage est mis à jour, afin que je puisse le mettre à jour seulement quand réellement nécessaire? J'ai essayé d'utiliser diverses combinaisons setNeedsDisplay: NO (à la fois les threads principaux et d'arrière-plan, avant et après mes mises à jour) qui semble être ignoré.
Merci d'avance à tous ceux qui peuvent donner un aperçu.
Oui. Le système de texte Cocoa est hautement optimisé et vous obtiendrez de bonnes performances si vous l'utilisez comme il est censé être utilisé. Dans ce cas, modifiez l'objet 'NSTextStorage' sous-jacent, qui est juste une sous-classe de' NSAttributedString' plutôt que de modifier la vue, qui est une approche de masse. –
Merci! Une combinaison de l'utilisation de l'objet NSTextStorage en plus d'une certaine optimisation de la façon dont je modifiais le texte a fait l'affaire. – stdout