我正在尝试更详细地了解 iOS 上的多线程。我浏览了一些类引用,如NSThread
, NSRunLoop
, NSTask
..
首先如以下链接所示: 使用runloop
Runloop
在Thread
.
那么为什么我们需要Runloop
在我们的应用程序中定义我们自己的呢?在这种情况下NSThread
它很有用,因为一些耗时的进程可以在单独的线程中运行,这样应用程序仍然可以在主线程上响应。
如果您有一个线程要定期继续其工作,那么与线程的运行循环交互可能会很有用。也就是说,一个运行循环会做一些工作,然后当它完成该工作时,它会让线程休息一段时间,然后在稍后恢复工作——有效地防止线程退出。您不需要与它们交互或定期自己配置/创建它们(如果您使用的是高级抽象,例如 Foundation,则只有一小部分应用程序符合条件,因为 Foundation 在大多数情况下会代表您设置它们)。
如果您的辅助线程只是执行指定的任务并且不需要等待某些外部事件(例如下载完成),那么您(通常)不需要与运行循环交互。
您可能会考虑使用NSOperationQueues
,因为它们将自行管理NSOperations
,NSBlockOperations
将允许取消任务并且可以在主线程和后台线程上安排。