Comment pouvez-vous assurer la fonction atexit enregistrée fonctionnera avec AppHelper.runEventLoop () dans PyObjC?

StackOverflow https://stackoverflow.com/questions/1255025

  •  12-09-2019
  •  | 
  •  

Question

Je me demande pourquoi je me enregistré une fonction atexit ... par exemple.

import atexit
atexit.register(somefunc)
...
AppHelper.runEventLoop()

Bien sûr, je sais quand sera atexit ne fonctionnera pas. Quand je commente sur AppHelper.runEventLoop() la fonction atexit est appelée. J'ai aussi mon oeuf parcouru pyobjc, et je vis sous __init__.py sous paquet objc le code suivant:

import atexit
atexit.register(recycleAutoreleasePool)

Je l'ai cherché toute référence dans l'œuf en vain. J'ai aussi essayé entourant une coquille try-finally autour AppHelper.runEventLoop(), et les commandes du bloc finally ne me appelé.

quelqu'un Hope pourrait me aider.

P.S. En supposant que je ne veux pas utiliser la méthode de applicationShouldTerminate: du délégué de l'application ...

Était-ce utile?

La solution

Je crois que vous avez besoin des délégués, car sinon la boucle d'événement peut quitter le processus assez brusquement (un peu comme os._exit) et donc ne pas donner le temps d'exécution Python une chance d'exécuter du code de terminaison telles que les clauses de finally, les fonctions de atexit, etc etc .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top