NSData dataWithContentsOfFile vs NSInputStream

时间:2012-11-03 11:14:45

标签: iphone objective-c ios nsdata nsxmlparser

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

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

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

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

1 个答案:

答案 0 :(得分: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使用垂直内存技术来处理数据页。