来自URL的所有数据是否在初始化时加载到NSData中?

时间:2010-09-10 20:45:31

标签: iphone memory nsxmlparser nsdata

当我这样做时到底发生了什么......?

NSData * data = [[NSData alloc] initWithContentsOfURL:[NSURL urlWithString:@“...”]];

它是否立即进入互联网,获取URL上的所有数据,返回并转到下一行?或者是否进行了设置,稍后在请求NSData的字节时读取数据?如果稍后读取数据,是否一次性读取所有数据?或者,当应用需要时,数据会逐渐读取吗?

我的基本问题是我有一个非常大的XML文件要解析。如果我设置一个NSData对象并通过NSXMLParser解析它,那么应用程序会因为XML数据太大而爆炸吗?或者应用程序“做正确的事情”并将XML解析为数据字节流?

谢谢!

1 个答案:

答案 0 :(得分:0)

它将立即进入网络并为您获取该数据。您的申请将被阻止,直到请求结束。从主线程执行此操作通常不是一个好主意,因为用户界面将阻止使应用程序无响应。

如果您使用此方法加载大型XML文件,则将整个文件读入内存,应用程序将阻止,直到完成为止。