1

我只是想知道为什么我注册了一个 atexit 函数......例如

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

我当然知道什么时候atexit不会工作。当我注释掉AppHelper.runEventLoop()该函数时,该atexit函数被调用。我还浏览了我的pyobjcegg,我在package__init__.py下看到了以下代码:objc

import atexit
atexit.register(recycleAutoreleasePool)

我在鸡蛋中寻找任何参考都无济于事。我还尝试在 周围环绕一个 try-finally 外壳AppHelper.runEventLoop(),并且 finally 块中的命令不会被调用。

希望有人可以在这里帮助我。

PS假设我不想使用应用程序委托的applicationShouldTerminate:方法......

4

1 回答 1

1

我相信您确实需要委托,因为否则事件循环可能会突然退出进程(有点像os._exit),因此不会让 Python 运行时有机会运行终止代码,例如finally子句、atexit函数等。

于 2009-08-10T16:37:20.970 回答