目标c-如何在不使用线程的情况下分解长时间运行的任务



如果我有一个长时间运行的任务,如何将其分解为一系列步骤,而不必使用单独的线程来执行?

例如,假设有一个电子表格应用程序,并且要对大量单元格进行重新计算,那么模型如何将其分解为块?例如,有没有一种ios代码将事件发布到自己身上的方法,这样它就可以做一个区块、发布一个事件、做另一个区块和发布事件等等。

还是使用单独线程的唯一方法?

我已经开始读了一堆ios书,但在其中任何一本书中都找不到这样的内容。

多线程可以是的一个选项


您可以始终使用delegation(我想我刚刚提出了这个术语,它使用委托并在发生某些事情时将事件传递给对象委托)。大多数iOS SDK对象都使用这个,比如UITableViewNSURLConnection等等。

您可以使用定时器NSTimer,但如果有任何事情需要很长时间,您将挂起UI。基本上,你需要确保你所做的所有工作都是<每次迭代0.01秒(大约),每次迭代稍微延迟一点会使UI反应更灵敏。

使用线程的原因是让操作系统可以安排事情,而不必担心。如果你在主线程上运行所有东西(当你试图做很多工作时),你要么会冻结UI,要么会一直担心安排。如果使用线程,则主线程具有适当的优先级,因此UI保持响应。

您所要求的似乎是一种设计方法,比如进度条。在整个长操作中,在预先指定的时间更新对象或UI。这个问题有点武断,我真的不知道你在问什么。不过,多线程是长操作的解决方案。

最新更新