我们正在编写一个大量使用 NSURLConnection 的 SDK。要管理所有这些连接(例如,批量取消它们),最好将它们全部运行在单个线程(最好是主线程)上。由于 NSURLConnection 的异步特性,这并不是一个可怕的想法 - 在我们的独立应用程序中,所有连接都在主线程上运行,连接后的繁重工作在辅助线程上执行(实际上,使用 GCD 或操作队列)结果已获得,没有任何停滞。
所以问题是 - 在哪种情况下用户会希望在多个线程上以及非主线程的线程上运行连接?
编辑:我认为我没有正确解释自己。我们以异步而非同步的方式使用 NSURLConnection。这允许我们在主线程上运行所有连接,而不会阻塞 UI。问题是:我们的 SDK 用户何时希望在不同线程上异步运行这些连接?
最佳答案
我能想象在另一个线程上运行异步 NSURLConnection 的唯一好理由是,如果您的委托(delegate)方法本身非常耗时。即使如此,我可能仍然会在主线程上运行它,并将处理移到后台队列上。
编辑:请注意,今天“将处理移至后台线程”非常容易。在 GCD 之前,这有点困难,因此在辅助线程上运行 NSURLConnection 本身在这种情况下可能更有用。当您将 NSURLConnection 嵌入到不处理主线程上的运行循环的 C++ 应用程序中时,它仍然有点用(这基本上仅适用于 Mac 应用程序)。
正如我相信您所理解的,NSURLConnection 已经管理其自己的后台线程以供内部使用。
简而言之,我相信您对此的直觉是正确的。答案是“几乎从来没有”。 NSURLConnection 在主线程上最容易管理。
关于objective-c - 你什么时候想在辅助线程上运行 NSURLConnection ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13826116/