iOS runloop机制有什么指南吗?

Car*_*loS 15 sockets iphone runloop ios

我正在学习iPhone上的套接字通信,它的指南说了些什么CFRunloop(这是一个指南CFNetwork,可以在iOS上使用吗?)我在哪里可以了解iOS上的runloop?API参考是不够的.

Jer*_*man 38

查看Apple的线程编程指南"运行循环"一章.简单来说:

  • 每个线程都有一个运行循环.
  • 必须运行run循环才能执行任何操作.Apple的应用程序主要功能在主线程上为您完成此操作.
  • 运行循环以特定模式运行."共模"实际上是一组模式,并且存在用于向该组添加模式的API.
  • 运行循环的主要目的是监视计时器并运行循环源.每个源都使用特定模式的特定运行循环进行注册,并且仅在runloop以该模式运行时的适当时间进行检查.
  • 运行循环在每个循环中经历几个阶段,例如检查定时器和检查其他事件源.如果发现任何源已准备好触发,则会触发相应的回调.
  • 除了使用现成的运行循环工具之外,您还可以创建自己的运行循环源以及注册运行循环观察器以跟踪运行循环的进度.

一个主要的缺陷是在等待来自runloop源的回调时忘记运行运行循环.当您决定忙于等待主线程上发生的事情时,这有时会出现问题,但是当您创建自己的线程并使用该runloop注册runloop源时,您最有可能遇到此问题.您负责建立自动释放池并在非主线程上运行runloop(如果需要),因为应用程序主函数不会为您执行此操作.

您最好阅读Apple的并发编程指南,它建议使用runloop机制的替代方案,例如操作队列和调度源."迁移远离线程"一章的"替换运行循环代码"部分建议使用调度源而不是runloop源来处理事件.


oct*_*cty 5

在Apple文档中查看这些文章:

主要事件循环

运行循环

有关如何通过运行循环运行异步连接的示例代码:

SimpleURLConnections(虽然这个使用NSURLConnection API)