Iphone CFHost DNS解析-何时可以使用同步API?

Iphone CFHost DNS解析-何时可以使用同步API?,iphone,api,asynchronous,synchronous,Iphone,Api,Asynchronous,Synchronous,几个月前,我参加了iPhone开发者技术讲座,询问了其中一位专家关于iPhone上缺少NSHost的问题。我移植到iPhone的一些代码在整个网络代码中大量使用了NSHost 我被告知Nhost在iPhone上,但它是私有的。我还被告知NSHost是一个同步API,我无论如何都不应该使用它。(如果有人能详细说明为什么不应该使用它作为奖励,那就太好了。) 我可以看到在主线程上使用同步API的注意事项,因为它们会一直阻塞直到完成—这对于网络代码来说从来都不是一件好事,因为有太多的因素可能会导致API

几个月前,我参加了iPhone开发者技术讲座,询问了其中一位专家关于iPhone上缺少NSHost的问题。我移植到iPhone的一些代码在整个网络代码中大量使用了NSHost

我被告知Nhost在iPhone上,但它是私有的。我还被告知NSHost是一个同步API,我无论如何都不应该使用它。(如果有人能详细说明为什么不应该使用它作为奖励,那就太好了。)

我可以看到在主线程上使用同步API的注意事项,因为它们会一直阻塞直到完成—这对于网络代码来说从来都不是一件好事,因为有太多的因素可能会导致API在相当长的时间内阻塞线程

我的解决方案是围绕CFHost的异步解析函数编写一个包装器

结果很好,我正在考虑将其发布到公共领域

但我的问题是:假设我的应用程序在连接阶段每次运行只解析一次主机名,然后在会话的其余部分缓存主机名。在解析过程中,会显示一个模式屏幕,告诉用户“正在连接”一个漂亮的微调器

解决方案是否异步真的很重要吗??用户必须等待连接,并且仅在第一次连接时进行解析。后续连接使用解析的缓存结果


什么时候可以同步?什么时候应该异步?

您的微调器不会旋转,因为在同步调用期间,UI也会被阻塞。当然,您可以在一个单独的线程上进行调用,但是您所做的基本上与异步调用相同。

我不确定UIActivityIndicator到底是什么,但它似乎会保持动画(旋转),即使主线程被阻塞,这很奇怪。我只能想象UIActivityIndicatorClass在另一个线程上做动画??奇怪。