J'ai une question concernant l'objet C++ & Javascript Mauvaise synchronisation du cycle de vie de l'objet et j'espère que vos gourous pourront m'aider. En particulier, j'incorpore SpiderMonkey dans mon programme C++. Je ne suis pas sûr que mon approche soit bonne ou non. Ce que je fais est commeC++ Objet et Javascript Mauvaise synchronisation du cycle de vie de l'objet
(1) Le programme C++ charge un fichier Javascript et appelle une fonction d'entrée.
(2) Dans la fonction d'entrée, certaines fonctions C++ sont appelées pour initialiser le programme. Au cours de ces appels, certains objets C++ seront créés. (3) En fonction de l'interaction de l'utilisateur, la fonction de script correspondante sera appelée en tant que gestionnaire d'événements.
Cette approche fonctionne, mais avec un problème (il pourrait y avoir non identifié plus :)
C'est
Dans ma fonction de gestionnaire d'événements JS, je dois chercher un objet C++ au contexte Javascript et appelle la fonction membre. Pour cela, dans ma fonction de récupération C++, je vérifie si l'objet homologue JS correspondant a été créé ou non. Sinon, j'utilise JS_NewObject pour en créer un et le retourner. Alors la fonction JS pourrait appeler la fonction native dessus.
Le problème est que dans certains cas, le résultat de cet appel de fonction native entraînera la mort de l'objet C++. Cependant, je ne peux pas trouver un moyen de notifier le contexte JS pour supprimer son objet homologue JS aussi. J'ai échoué à trouver une fonction JSAPI pour le faire.
Dans mon programme actuel, tous les objets JS créés à l'aide de JS_NewObject sont détruits lorsque le runtime JS est finalement détruit.
Je suppose que ceci a quelque chose à voir avec la "garbage collection" de SipderMonkey. Mais je n'ai pas encore trouvé un bon guide. Merci beaucoup pour toute suggestion à