我打算将TBXML用于Weather应用程序。到目前为止,我已经将NSXMLParser与NSURLConnection一起使用,但是我认为它必须能够更简单,更快速,更稳定(当前代码是如此复杂,次要问题一直存在,难以调试)。
我一直在寻找异步解析器,并最终在一篇文章(“如何为iPhone项目选择最佳的XML解析器”在raywenderlich上)中找到了导致TBXML的文章。通读文档,我发现您也可以使用URL对其进行初始化,这将消除使用NSURLConnection的需要。我的第一个问题是:与之相比,使用NSURLRequest有什么优点?在启动TBXML之前,我将首先检查网络连接是否正常,这样就不会有问题。
我的第二个问题是关于异步性的:如果我简单地调用initWithURL或initWithData,它的处理是否是异步的?从我所看到的,它没有委托调用,但是您只是直接从TBXML对象获取元素。如果我尝试从中获取元素,它会挂在那里吗?因为如果使用initWithURL,这可能会持续很长时间(这几乎可以回答我的第一个问题),如果这样,TBXML是否可以安全地在另一个线程上运行(我认为是)?
最佳答案
如果要异步解析它,则确实需要辅助线程,套接字等类似的东西可以在runloop上运行,因为它们只需要偶尔检查一下是否有可读取的数据。解析器确实需要使用一些处理电源。
只需使用大型中央调度,解析数据并使用它即可。我不能告诉你它的线程是否安全,但是如果它没有说不安全,那么无论如何它都是最安全的。