【问题标题】:Shutting down multithreaded NSDocument关闭多线程 NSDocument
【发布时间】:2010-02-22 20:11:35
【问题描述】:

我有一个基于 NSDocument 的 Cocoa 应用程序,当用户关闭文档窗口或应用程序退出时,我需要优雅地终止几个辅助线程(等待它们运行当前循环)。我正在使用 canCloseDocumentWithDelegate 在文档关闭时向线程发送一个标志,然后当它们完成时,其中一个调用 [NSDocument close]。当用户关闭文档窗口时,这似乎很有效,但是当您退出应用程序时,它会出现各种错误(在调用任何内容之前崩溃)。像这样的事情的正确程序是什么?

【问题讨论】:

    标签: c++ objective-c cocoa multithreading nsdocument


    【解决方案1】:

    最好的方法是让线程拥有必要的对象,以便线程完成它正在做的任何事情,直到能够中止处理并尽快终止。

    在非 GC 下,这意味着 -retain 表示线程 -releases 完成后。对于 GC,它只是对所需对象的硬引用。

    如果在文档关闭之前必须继续并且必须完成某种冗长的处理,则放下带有进度条的工作表并离开文档模态直到完成(Aperture 和 iPhoto 都是这样做的)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      • 1970-01-01
      相关资源
      最近更新 更多