我有一个基于NSDocument的Cocoa应用程序,我有两个辅助线程,当用户关闭文档窗口或应用程序退出时,我需要优雅地终止它们(等待它们运行到当前循环)。当文档关闭时,我使用canCloseDocumentWithDelegate向线程发送一个标志,然后当它们结束时,其中一个线程调用NSDocument close。当用户关闭文档窗口时,这似乎很有效,但当你退出应用程序时,它会出现各种错误(在调用任何东西之前崩溃)。对于这样的事情,正确的过程是什么?
发布于 2010-02-23 05:31:28
最好的可能方法是让线程拥有所需的对象,以便完成它正在做的任何事情,从而能够尽可能快地中止处理和终止。
在非GC中,这意味着线程完成时-releases的-retain。对于GC,它只是对所需对象的硬引用。
如果有某种冗长的处理必须继续进行,并且必须在文档关闭之前完成,那么放一张带有进度条的工作表,并让文档模式直到完成( Aperture和iPhoto都是这样做的)。
https://stackoverflow.com/questions/2313813
复制相似问题