0

我必须处理 XML,现在使用 NSInputStream 会破坏我的代码,因为我必须重写很多东西。

将 dataWithContentsOfFile 整个文件放入内存,还是只读取 getBytes 方法请求的内容?

我使用 NSData 作为 NSXMLParser 的输入参数,我想知道有没有关于这个的文档?

苹果文档中没有关于 NSData 的 dataWithContentsOfFile 内部或其实现的文档。

4

1 回答 1

0

当您为 NSXMALParser 分配 NSData 时,这意味着为该对象创建数据缓冲区并且每个对象都占用内存(RAM),因为 iPhone IOS 非常了解如何使用虚拟内存。当您从文件中读取整个数据时,它会占用对象数据,如果数据大小超过几个(取决于操作系统算法)内存页,则对象使用虚拟内存管理。数据对象也可以包装预先存在的数据,而不管数据是如何分配的。该对象不包含有关数据本身的信息(例如其类型);决定如何使用数据的责任在于客户。特别是,当分布在 big-endian 和 little-endian 机器之间时,它不会处理字节顺序交换。
我建议您再次阅读此链接 https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/BinaryData/BinaryData.html#//apple_ref/doc/uid/10000037i它与iOS有关。但是是的,你关心一件事……在 IOS 中有对象所有者的类型。一个是用户,另一个是 IOS 对象。如果您创建 NSData 这意味着您分配内存缓冲区并将数据指针分配给这个可验证的,但此时整个数据都驻留在内存中。这是我们的假设,但在此期间 IOS 知道如何处理这种情况。IOS 使用虚拟内存技术来处理数据页。

于 2012-11-03T18:57:37.613 回答