可可 – 是一个非线性的NSURLConnections多线程

可可 – 是一个非线性的NSURLConnections多线程,第1张

概述我注意到如果我创建一个NSURLConnection并触发请求,一切都很好.在调用连接的代码块完成后,调用我的委托方法并调用最后一个委托方法.大. 这让我相信连接是异步的,这意味着它们是多线程的.那是对的吗?它们可以是异步但在同一个线程中吗?不,那太疯狂了 – 对吗? 但是,在我看过使用NSOperation的每个例子中,NSURLConnections始终是scheduledInRunLoop, 我注意到如果我创建一个NSURLConnection并触发请求,一切都很好.在调用连接的代码块完成后,调用我的委托方法并调用最后一个委托方法.大.

这让我相信连接是异步的,这意味着它们是多线程的.那是对的吗?它们可以是异步但在同一个线程中吗?不,那太疯狂了 – 对吗?

但是,在我看过使用NSOperation的每个例子中,NSURLConnections始终是scheduledInRunLoop,之后在while循环中调用[runLoop runMode …].

有人能解释到底发生了什么吗?在我看来,第一种情况需要产生辅助线程但不需要手动调用运行循环(在这些线程上),而NSOperation(在新线程中)确实需要手动调用运行循环.

为什么第一种情况不需要手动调用?

解决方法 NSURLConnection确实产生了一个后台线程来管理它自己的所有实例,但这通常与调用者无关,因为委托调用是在任何线程拥有调度连接的runloop上进行的.(事实证明这是非常相关的)最近对我来说,但这些事情只有在多线程应用程序中处理疯狂的crashers时才会出现.)

有关更多与调用者相关的详细信息,您应该查看 – [NSURLConnection scheduleInRunLoop:forMode:]的文档.它解释了如何手动处理调度和取消调度,以及NSURLConnections在多线程环境中的行为方式.

如果您不清楚运行循环如何工作以及如何在不需要额外线程的情况下执行异步 *** 作,则应在“线程编程指南”中阅读Run Loops.这是转向更高级Cocoa开发的一个非常重要的主题.

总结

以上是内存溢出为你收集整理的可可 – 是一个非线性的NSURLConnections多线程全部内容,希望文章能够帮你解决可可 – 是一个非线性的NSURLConnections多线程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1001148.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存