我只是想澄清一下我对 iOS 应用程序中使用的 Web 服务的理解。
因此,NSURLConnection 用于从 iOS 应用程序调用 Web 方法并获取 Web 方法返回的数据。一旦接收到数据,我们可以使用 XMLParser 或 JSON 解析器来解析该数据,具体取决于 Web 服务的写入内容。这样是否正确?
我只是想澄清一下我对 iOS 应用程序中使用的 Web 服务的理解。
因此,NSURLConnection 用于从 iOS 应用程序调用 Web 方法并获取 Web 方法返回的数据。一旦接收到数据,我们可以使用 XMLParser 或 JSON 解析器来解析该数据,具体取决于 Web 服务的写入内容。这样是否正确?
只是为了补充其他人在评论中已经说过的话:
理想情况下,您希望始终使用不会阻塞主线程的 NSURLConnection 的委托进行异步连接。如果您还不知道,iOS 将强制退出阻塞主线程太长时间的应用程序。在某些情况下同步连接是可以的,但我会说超过 90% 的时间你需要异步连接。
也就是说,异步连接会引起他们自己的一系列麻烦。如果您需要在允许用户访问应用程序界面之前获取数据,则需要抛出加载屏幕,然后将其删除。如果用户移动到启动新请求的应用程序的不同部分,您将需要管理取消请求。您还需要确定是否需要为后台完成注册任何正在进行的请求,以防用户将应用程序置于后台。
在 JSON 解析方面,总是建议尽可能使用 NSData,因为从 NSString 转换 JSON 会增加 NSString 本身的大量开销。我个人不使用 Apple 提供的 JSON 解析器,而是使用出色的 JSONKit,因为它甚至比 Apple 的二进制 plist 解析器还要快。但是,它确实要求您的 JSON 非常严格地遵守 JSON RFC,并且它是 UTF-8/16/32 编码的,而不是 ASCII。这在可用的更快的 JSON 解析器中是相当标准的。
尽可能避免使用 XML。内置的 iPhone 解析器只是一个 SAX 风格的解析器,实现起来很麻烦。如果您必须使用 XML,请查看Ray Wenderlich 的 XML 解析器比较并选择一个合适的。但是,如果您要解析大型 XML 文档,那么 SAX 可能是您唯一的选择,因为 iDevices 的处理能力有限。
- 编辑 -
其中一位评论者提到了 SBJSON。我建议完全反对。它比 Apple 的 JSON 解析器(从 iOS 5 开始可用)慢,并且比 JSONKit 和其他几个慢一个数量级。由于在 JSON 解析中也收到错误,我特意将我当前的企业级 iOS 应用程序从 SBJSON 中移出。