2012-11-03 1 views
0

XML을 처리해야하므로 NSInputStream을 사용하면 많은 것을 다시 작성해야하므로 코드가 손상됩니다.NSData dataWithContentsOfFile 대 NSInputStream

dataWithContentsOf는 전체 파일을 메모리에 저장하거나 getBytes 메소드에 대해 요청 된 내용 만 읽습니까?

NSXMLParser의 입력 매개 변수로 NSData를 사용하고 있는데 이에 관한 문서가 있습니까?

NSData의 dataWithContentsOfFile 또는 그 구현의 내부에 대한 Apple의 문서에 대한 문서가 없습니다.

+0

이 메일 대화를 http://lists.apple.com/archives/cocoa-dev/2012/May/msg00765.html에서 확인하십시오. 이진 처리에 관심이 있으니 https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/BinaryData/BinaryData.html#//apple_ref/doc/uid/10000037i를 참조하십시오. –

+0

@SudeshKumar, 전체 파일을 메모리에로드하는 방법에 대해 언급하지 않은 링크에서 질문을 읽으십시오. –

+0

'[NSData dataWithContentsOfFile : ...]'은 전체 파일을 한 번에 읽습니다. –

답변

0

NSXMALParser에 NSData를 할당하면 iPhone IOS가 가상 메모리 사용 방법을 잘 알고 있기 때문에 NSXMALParser에 NSData를 할당하면 해당 객체에 대한 데이터 버퍼를 만들고 모든 객체가 메모리 (RAM)를 차지한다는 것을 의미합니다. 파일에서 전체 데이터를 읽을 때 객체 데이터를 차지하고 데이터 크기가 OS 페이지에 의존하는 몇 가지 메모리 페이지보다 많으면 객체는 가상 메모리 관리를 사용합니다. 데이터 객체는 데이터 할당 방법에 관계없이 기존 데이터를 래핑 할 수도 있습니다. 객체에는 데이터 자체에 대한 정보가 없습니다 (유형 등). 데이터를 사용하는 방법을 결정하는 책임은 클라이언트에 있습니다. 특히, 빅 엔디안 (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는 데이터 페이지를 처리하기 위해 가상 메모리 기술을 사용합니다.