NSOperations的队列和处理应用程序退出

Mic*_*all 4 iphone multithreading core-data nsoperation nsoperationqueue

我即将创建一系列NSOperations并将它们运行在队列中.

它们都是顺序的并且一次运行一个.

这些操作将从Web获取数据并创建和保存核心数据管理对象.

如何处理应用程序退出的情况?由于操作在分离线程中运行,如何让主线程等到当前操作"安全"退出?在某些情况下,我很高兴线程(操作)在完成之前退出,因为在进一步的应用程序启动时,作业将继续并从中断处继续.

非常感谢,

麦克风

Bra*_*son 5

设计您的操作,以便他们isCancelled在适当的安全时间(开始时,在操作的一个阶段完成后等)检查他们的财产,并在那时拯救.在applicationWillTerminate,向您的操作队列发送一条-cancelAllOperations消息,然后通过-waitUntilAllOperationsAreFinished消息进行操作.这将阻止,直到队列中的所有操作都完成.如果所有操作都isCancelled正确处理,这不应该减慢应用程序的退出速度.

需要注意的一件事是-waitUntilAllOperationsAreFinished,在调用时applicationWillTerminate,将阻塞主线程.如果您的任何操作在主线程上执行选择器,那么您的应用程序将在此时冻结.