2011-11-15 49 views
3

我打算将TBXML用于我的天气应用程序。到目前为止,我已经使用NSXMLParser和NSURLConnection,但是我觉得它必须能够更简单,更快速和更稳定(当前代码非常复杂,小问题不断下滑,以至于无法调试)。TBXML中的异步和initWithURL

我一直在寻找异步解析器,并最终在一篇文章中(如何选择最佳的xml解析器为您的iPhone项目raywenderlich),这导致我到TBXML。通过阅读文档,我发现你也可以用一个URL来初始化它,这将消除使用NSURLConnection的需要。我的第一个问题是:使用NSURLRequest的优点是什么?在开始TBXML之前,我要先检查网络连接是否正常,以免出现问题。

我的第二个问题是关于异步:如果我只是简单地调用initWithURL或initWithData,它的处理是异步的吗?从我所看到的,它没有委托调用,而是直接从TBXML对象中获取元素。如果我在它完成之前尝试从它获取元素,它会简单地挂在那里吗?因为如果你使用initWithURL(这会回答我的第一个问题),这可能会持续特别长的时间。如果是这样,是否TBXML可以安全地在另一个线程上运行(我认为它是这样)?

回答

1

如果你想异步解析它,你真的需要一个辅助线程,套接字和类似的东西可以在runloop上工作,因为他们只需每隔一段时间检查一次是否有数据可供读取。解析器真的需要使用一些处理powah ..

只需使用宏中央调度,解析您的数据并使用它。我不能告诉你是否它的线程安全的,但如果它不说,它的不安全那么它很可能是安全的,反正..

+0

这个问题不会出现在另一个线程上,我一直在做这样的事情。我的主要问题是,如果可以安全地在另一个线程上运行,例如NSURLConnection似乎不是,或者它本身是异步的。 –

+1

@ErikDolor NSURLConnection本身应该是异步的,就像NSURLDownload一样,尽管NSURLDownload在iOS上不可用 –

+0

没关系,现在我记得它是CLLocationManager,这是我的问题。但是,它不应该在它创建的线程上报告委托事件吗? –