2009-05-28 10 views
0

Ich verwende ein SDK für eine USB-Kamera. Das SDK gibt an, dass für jeden erfassten Frame eine Callback-Funktion aufgerufen wird. Die Callback-Funktion ist im SDK definiert. Sie ruft einen Datenzeiger auf das Bild und eine Struktur zur Interpretation der Daten ab.Wie verwendet man Variablen in einer Delegatfunktion

All das funktioniert korrekt.

Um daraus eine nützliche Anwendung zu machen, muss ich auf einige Variablen aus meiner Anwendung zugreifen. Jetzt, da die Delegatfunktion statisch ist, kann ich nur auf statische Mitglieder zugreifen. Ich dachte daran, aus ihnen ein Singleton zu machen, weil es statisch wird, aber gibt es irgendeine "konventionelle" Möglichkeit, auf andere Daten innerhalb einer Delegiertenfunktion zuzugreifen?

Antwort

1

Warum nicht einfach einen nicht statischen Delegaten verwenden? In diesem Fall hätten Sie Zugriff auf die Klasseninstanzmitglieder. Gibt es etwas, das Sie in den statischen Delegaten zwingt, anstelle eines Delegaten für eine Instanz einer Klasse, in der sich Ihre Daten und Logik befinden?

Wenn ja, gibt es eine Möglichkeit, Daten an den Rückruf zu übergeben? Wenn Sie können, können Sie eine Referenz an eine Klasse übergeben und diese in Ihrem Delegaten verwenden, um Ihre Anwendungsdaten abzurufen.

Wenn nicht, dann sind Sie möglicherweise gezwungen, statische Daten oder einen statischen Verweis auf eine Klasse zu haben, die Ihre Daten enthält. Ein Singleton oder ein ähnliches Konstrukt könnte in diesem Fall die beste Option sein ...

0

Warum haben Sie den Delegaten statisch gemacht? Wenn es wehtut, wenn du es machst, hör auf es zu tun. :)

0

Der Delegierte kann statisch sein (obwohl, warum es sein müsste, ich bin nicht klar). Die Funktion muss nicht sein.

Die Dereferenzierung eines Delegaten in einen Methodenaufruf interessiert nicht, ob es sich bei der aufgerufenen Funktion um eine Instanzmethode oder eine statische Methode handelt.

Verwandte Themen