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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top