Come si può garantire registrato atexit funzione esegue con AppHelper.runEventLoop() in PyObjC?

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

  •  12-09-2019
  •  | 
  •  

Domanda

Mi chiedo solo perché ho i miei registrato una funzione atexit...ad es.

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

Naturalmente so che quando si atexit non funziona.Quando io commento AppHelper.runEventLoop() il atexit la funzione viene chiamata.Ho anche visto il mio pyobjc uovo, e ho visto sotto __init__.py sotto objc pacchetto il seguente codice:

import atexit
atexit.register(recycleAutoreleasePool)

Ho guardato per qualsiasi riferimento all'interno dell'uovo senza alcun risultato.Ho anche provato circostante un try-finally guscio intorno AppHelper.runEventLoop(), e i comandi del blocco finally non chiamato.

Spero che qualcuno mi possa aiutare qui.

P. S.Supponendo che non voglio usare l'Applicazione delegato applicationShouldTerminate: metodo di...

È stato utile?

Soluzione

Credo che hai bisogno di delegati, perché altrimenti il ciclo di eventi può uscire dal processo piuttosto bruscamente (un po ' come os._exit- )) e quindi non dare il Python runtime la possibilità di eseguire il codice di terminazione come finally clausole, atexit funzioni, etc etc.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top