![]() |
1
2
使用短语“secondary runloop”表明您不知道run loop是什么。 NSRunLoop是线程“主循环”的实现。或多或少,
运行循环有一个线程。每个线程最多有一个运行循环。“performSelectorOnMainThread“在运行循环中调度它,但是程序员通常谈论线程,而不是它使用的任何运行循环抽象,因为它们都是相同的。并非所有线程都有运行循环(NSThread的函数通常会给您一个没有运行循环的线程;我认为如果您需要运行循环,您必须自己创建一个)。 可能 主线程,除非您使用了NSOperation/dispatch.*/etc。如果您在另一个线程上调度它,那么(我认为)委托回调将从另一个线程运行。你可能不想这样。 现在,线程。 生成一个大部分时间处于空闲状态的后台线程是没有意义的。NSURLConnection应该只需要很少的处理(你不可能在一开始就把那么多的带宽放到一个电话中);在主运行循环中运行它几乎没有任何开销;线程的开销往往要大得多。 如果您正在处理数据,并且处理是CPU密集型的,那么您可能希望它在后台线程中运行。您可以将连接放在后台线程中,但一般来说,在主线程中尽可能多地进行连接比较容易。 我不会开始讨论线程间通信的问题,因为它们是一个主要的问题。只有当您知道需要并发时才使用它。
|
![]() |
Ari Haran · AFNetworking的默认超时秒数? 9 年前 |
![]() |
Adrideh · AVaudioRecorder发布请求iOS未发送 10 年前 |
![]() |
Geek · 从iOS发送POST参数时出现问题 11 年前 |
![]() |
William Falcon · 选项卡代理的标准模式是什么[关闭] 12 年前 |