Wie können Sie sicherstellen registriert atexit-Funktion wird mit AppHelper.runEventLoop() in PyObjC?

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

  •  12-09-2019
  •  | 
  •  

Frage

Ich Frage mich nur, warum ich mein registriert eine atexit-Funktion...z.B.

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

Natürlich weiß ich, Wann wird atexit wird nicht funktionieren.Wenn ich kommentiere AppHelper.runEventLoop() die atexit Funktion aufgerufen wird.Ich auch durchsucht meine pyobjc ei, und ich sah, wie es unter __init__.py unter objc Verpacken Sie die folgenden code ein:

import atexit
atexit.register(recycleAutoreleasePool)

Ich sah für jede Referenz innerhalb der ei-ohne Erfolg.Ich habe auch versucht, um einen try-finally-Schale rund AppHelper.runEventLoop(), und die Befehle in der finally-block wird nicht aufgerufen.

Hoffe, jemand könnte mir helfen hier.

P. S.Angenommen, ich will keine Anwendung Delegat applicationShouldTerminate: Methode...

War es hilfreich?

Lösung

Ich glaube, Sie müssen die Delegierten, weil sonst die Ereignis-Schleife beenden kann der Prozess sehr plötzlich (Art, wie os._exit) und daher nicht die Python-runtime eine chance zu laufen Beendigung code wie finally Klauseln, atexit Funktionen, etc etc.

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