NSTextView Updates Steuerung mit Flimmern umgehen und die Geschwindigkeit verbessern
-
26-09-2019 - |
Frage
Ich habe eine Unterklasse NSTextView daß ich in einem separaten Thread am Manipulieren (mit performSelectorOnMainThread: withobject: waitUntilDone :) Verwenden von Selektoren replaceCharactersInRange: withString :, setSelectedRange :, und insert :. Ich erlebe Flackern von Text und schlechte Leistung als die NSTextView die Anzeige für jeden Betrieb aktualisiert.
Alle Vorschläge, wie zu steuern, wenn die Anzeige aktualisiert wird, so dass ich es nur aktualisieren können, wenn sie tatsächlich benötigt? Ich habe versucht, verschiedene Kombinationen mit setNeedsDisplay. NO (von beide Haupt- und Hintergrundthreads, vor und nach meinen Updates), die ignoriert zu werden scheint
Vielen Dank im Voraus für jeden, der einen Einblick bieten kann.
Lösung
Ich denke, man sollte die zugrunde liegende NSTextStorage
für die Textansicht, anstatt die Ansicht der ereignisbezogene Methoden direkt aufrufen. Das ist ein ziemlich klassisches Beispiel für eine Model-View-Controller-Architektur: die NSTextView
ist die Aussicht und die NSTextStorage
ist das Modell. Wann immer möglich, sollten Sie das Modell direkt und lassen Sie die Controller / Ansicht Schichten mit der Aktualisierung der Ansicht umgehen manipulieren, wie sie für richtig halten.