Frage

Ich habe eine Kakao-Schnittstelle, das Kernstück verwendet. Wenn ich eine Taste in der Schnittstelle drücken, wird eine Kurve gezeichnet. Ich wollte eine Folge von Graphen, die durch den Aufruf der Zeichenmethode mehrmals zusammen mit Aufrufen schaffen schlafen () dazwischen. Aber es scheint, dass, obwohl die Verbindungsdaten neu zu laden werden, dass nichts passiert, bis die Funktion beendet wird (nur letzte Graph und zeigt). Jetzt weiß ich, dass CPAnimation existiert, aber bevor ich ihn zu benutzen Ich habe mich gefragt, was es ist, dass passiert, wenn die Funktion beendet wird, die das Diagramm refresh macht. Hätte ich auf den Thread ergeben, die Pflege der erfrischend nimmt statt Schlaf zu verwenden?

War es hilfreich?

Lösung

Ok habe ich herausgefunden, wie. I genannt reload Methode aus einem Verfahren, das in einem separaten Thread (die immer zurückgibt). Diese kochte reload von einem IBAction zu fordern und auch mit einem NSTimer. Schließlich statt Schlaf die Verwendung verwende ich NSConditionLock die Verarbeitung zu koordinieren und die erfrischenden

Andere Tipps

Vermutlich Core-Plot (oder Code) wird die Ansicht als Anzeige benötigen. Das geschieht nicht sofort; es passiert, wenn Sie zu der Ereignisschleife zurück.

Wenn Sie sleep in einer Mac OS X-Anwendung verwenden, töten Sie einen Welpen. Verwenden Sie NSTimer statt. Haben Sie Ihre Timer-Rückruf-Methode die Arbeit für eine grafische Darstellung erforderlich ist, und setzen, was auch immer Instanzvariablen notwendig sind für das Verfahren zu wissen, welche grafisch darstellen es ziehen sollte, so dass das Verfahren die jeden Graphen wiederum zieht, bis es aus ihnen heraus läuft.

Oder, noch besser präsentiert eine Liste von Graphen, die der Benutzer auswählen kann, anstatt, der Benutzer sieht all Diagramme als Dia-Show. (Es sei denn, eine explizit markierte Dia-Show ist, was Sie zu implementieren.)

Kern Plot, wie die meisten Cocoa Zeichnung Frameworks, ist faul: zieht am Ende des Lauf Schleifeniterationslatenzzeit. Damit soll sichergestellt werden, dass die Dinge nicht allzu oft gezogen.

Anstatt sofort zeichnen, werden die Schichten als benötigen Zeichnung markiert.

Wie von anderen darauf hingewiesen wird, ein besserer Ansatz zu schlafen ist NSTimer zu verwenden, um die Laufschleife zu vermeiden, blockieren oder NSObject Methoden wie perform zu verwenden: withobject: afterDelay:

Peter hat es rechts die Nachladedaten Methode eigentlich nichts machen. Das Grundstück ist als benötigte Anzeige markiert und aktualisierte das nächste Mal der Schichten auf den Bildschirm gezeichnet werden. Wenn Sie sleep verwenden, es wird nie eine Chance zu ziehen.

Beachten Sie auch, dass Core-Plot ein recht junges Projekt ist; CPAnimation und die zugehörigen Klassen sind Stubs. Sie tun nicht wirklich noch nichts. : -)

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