CFHost DNS解析 - 什么时候可以使用同步API?

时间:2010-02-15 11:05:42

标签: iphone api asynchronous synchronous

几个月前我去了iPhone开发者技术讲座,并向那里的一位大师询问了iPhone上缺少NSHost的问题。我移植到iPhone的一些代码在其网络代码中大量使用了NSHost。

我被告知NSHost在iPhone上,但它是私有的。我还被告知NSHost是一个同步API,我不应该使用它。 (如果有人可以详细说明为什么不应该使用它,作为奖励,这将是伟大的。)

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

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

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

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

分辨率是否异步真的很重要吗?用户必须等待连接,并且分辨率仅在第一次连接时完成。后续连接使用解析的缓存结果。

什么时候可以同步,什么时候应该是异步的呢?

1 个答案:

答案 0 :(得分:2)

你的漂亮微调器不会旋转,因为在同步调用期间UI也会被阻止。当然,你可以在一个单独的线程上进行调用,但那时你所做的事情与异步调用基本相同。