2009-05-28 12 views
0

J'utilise un SDK pour une caméra USB. Le SDK spécifie que pour chaque image saisie, une fonction de rappel sera appelée. La fonction de rappel est définie à l'intérieur du SDK, il obtient un pointeur de données à l'image et une structure utilisée pour interpréter les données.comment utiliser les variables dans une fonction de délégué

Tout cela fonctionne correctement.

Pour en faire une application utile, j'ai besoin d'accéder à quelques variables de mon application. Maintenant, parce que la fonction de délégué est statique, je peux seulement accéder aux membres statiques. Je pensais à faire un singleton d'eux parce que ça va être statique, mais est-il « façon conventionelle » d'accéder à d'autres données dans une fonction de délégué?

Répondre

1

Pourquoi ne pas simplement utiliser un délégué non statique? Vous auriez accès aux membres de l'instance de classe dans ce cas. Y at-il quelque chose que vous forçant le délégué statique au lieu d'un délégué sur une instance d'un de la classe où réside vos données et la logique?

Si oui, alors est-il possible de transmettre des données au rappel? Si vous le pouvez, vous pouvez passer une référence à une classe et l'utiliser dans votre délégué pour obtenir vos données d'application. Si ce n'est pas le cas, vous pouvez être contraint d'avoir des données statiques, ou une référence statique à une classe contenant vos données. Un singleton ou une construction similaire peut être la meilleure option dans ce cas ...

0

Pourquoi avez-vous rendu le délégué statique? Si ça fait mal quand vous le faites, arrêtez de le faire. :)

0

Le délégué peut être statique (bien que pourquoi il devrait être, je ne suis pas clair). La fonction n'a pas besoin d'être. Le déréférencement d'un délégué dans un appel de méthode ne se soucie pas de savoir si la fonction appelée est une méthode d'instance ou une méthode statique.

Questions connexes