iPhone 응용 프로그램 용 데이터를 생성하는 Mac OS X 프로그램에서 NSKeyedArchiver를 사용하고 있습니다. 나는 기본적으로 결과 아카이브가 내가 예상했던 것보다 훨씬 큽니다 것을 알았습니다. 예 :NSArray의 NSKeyedArchiver에 큰 크기의 오버 헤드가 있습니다.
NSMutableArray * ar = [NSMutableArray arrayWithCapacity:10];
for (int i = 0; i < 100000; i++) {
NSString * s = [NSString stringWithFormat:@"item%06d", i];
[ar addObject:s];
}
[NSKeyedArchiver archiveRootObject:ar toFile: @"NSKeyedArchiver.test"];
유용한 데이터의 10 * 100000 = 1M 바이트를 저장하지만 결과 파일의 크기는 거의 3 메가 바이트입니다. 오버 헤드는 배열의 항목 수가 증가하는 것처럼 보입니다. 이 경우 1000 개의 항목에 대해 파일은 약 22k였습니다.
"file"은 "Apple 이진 속성 목록"(XML 형식 아님)임을보고합니다.
이 거대한 오버 헤드를 방지하는 간단한 방법이 있습니까? 내가 제공하는 단순성을 위해 NSKeyedArchiver를 사용하고 싶었습니다. 필자는 비 제너릭, 바이너리 형식의 데이터를 쓸 수 있지만 그다지 우아하지는 않습니다. 또한 데이터를 큰 덩어리로 모으고이를 NSKeyedArchiver에 공급해야합니다. 다시 한번 간단하게 & & archiver를 사용할 준비가되었습니다. 이 오버 헤드를 줄일 수있는 메서드 호출이나 사용 패턴이 누락 되었습니까?
감사합니다. 8) 맞습니다. plist가 트릭을해야합니다. 나는 바이너리 형식도 잊어 버렸다. – BobK