如果我有一个长时间运行的任务,如何将其分解为一系列步骤而不必使用单独的线程来执行它?
例如,假设有一个电子表格应用程序,并且要执行大量单元格的重新计算,模型如何将其分解为块?有没有办法让ios代码向自己发布事件,例如,它可以做一个块,发布一个事件,做另一个块,发布一个事件等。
或者是使用单独线程的唯一方法吗?
我已经开始阅读一堆ios书籍了,但是在任何一本书中都找不到这样的东西。
答案 0 :(得分:1)
多线程可以是一个选项
你总是可以使用delegation
(我想我刚刚提出了这个术语,它使用委托并将事件传递给对象委托,当事情发生时)。大多数iOS SDK对象使用此功能,例如UITableView
,NSURLConnection
,还有更多。
答案 1 :(得分:0)
看起来你问的是你设计某种东西的方式,比如进度条。在整个长操作的预定时间,您可以更新对象或UI。这个问题有些武断,我真的不确定你的要求。多线程是长时间操作的解决方案。
答案 2 :(得分:0)
您可以使用计时器NSTimer,但是如果有任何需要很长时间的话,您将会暂停UI。基本上你需要确保你所做的所有工作都是<每次迭代0.01秒(大约),并且稍微延迟每次迭代会使UI更具响应性。
使用线程的原因是允许操作系统安排事情,而不必担心它。如果您在主线程上运行所有内容(当您尝试执行大量工作时),您将冻结UI或不断担心调度。如果使用线程,主线程具有适当的优先级,因此UI保持响应。