如何中止 iPhone 的 NSXMLParser 等待
当初始化 NSXLParser 时,如下所示:
NSXMLParser* xmlParser=[[NSXMLParser alloc] initWithContentsOfURL:[NSURL URLWithString:urlstring]];
如果服务器关闭,它将等待相当长的时间才能返回线程。这真的很烦人,即使我退出应用程序并重新启动应用程序,它也会继续黑屏等待,直到超时。
如何中止 init?有没有更好的方法在调用解析器之前检查服务器是否已启动?谢谢你的帮助。
When init the NSXLParser as below:
NSXMLParser* xmlParser=[[NSXMLParser alloc] initWithContentsOfURL:[NSURL URLWithString:urlstring]];
if the server is down, it will wait for quite some time before the thread returns. It is really annoying even if I exit the application and restart the application, it will continue to wait with a black screen until it times out.
How to I abort the init? Is there a better way to check whether the server is up before calling the parser? Thanks for helping.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您应该使用 NSURLConnection 及其委托来下载到 NSData 类型。
然后就可以正确控制连接了。
从那里您可以将 NSData 传递给 NSXMLParser 并单独控制它。
我希望它对你有帮助。
You should use NSURLConnection and its delegates to download to an NSData type.
Then you can control the connection properly.
From there you can pass the NSData to the NSXMLParser and control it separately.
I hope it help you.
我最终使用 UIWebView 首先请求 URL。如果完成加载,我将调用 xmlparser 再次请求相同的 url。 UIWebView 请求的好处是它在不同的线程上运行,因此 UI 不会冻结。
这不是想法,而是想法。我讨厌两次请求同一个 URL。如果您有更好的建议,请帮忙。
I ended up use a UIWebView to request the URL first. If it finish loading, I will then call the xmlparser to request the same url again. The nice thing about UIWebView request is that it runs on a different thread so the UI does not freeze.
This is not idea; I hate to request the same URL twice. If you have a better suggestion, please help.