CFDataRef에 대한 문서를 살펴보면 CFDataRef를 만든 후에 압축 할 내용을 볼 수 없습니다.CFDataRef 개체를 압축하고 있습니까?
CFIndex byteSize = GetExportByteSize();
const UInt8 *exportData = GetExportDataPtr();
CFDataRef dataRef = CFDataCreate(kCFAllocatorDefault, exportData, byteSize);
CFDictionarySetValue(dict, kAS_ExportDataKey, dataRef);
기본적으로, 크기가 2MB의 인 메모리 청크에서 CFDataRef을 만드는거야 예를 들어, 내 코드에서 나는 같은 것을 할. 많이 사용하지는 않지만 실제로는 너무 많은 데이터입니다.
생성 후 CFDataRef 개체를 압축 할 수 있습니까? 또는 먼저 가리키는 원시 데이터를 압축하는 것이 더 나은가?
zlib 제안에 감사드립니다. 시간 제약으로 인해 CFCreateCompressedDataRef() 또는 유사한 함수가 필요했습니다. 향후 업데이트에서는 저장해야하는 데이터의 양을 줄일 수 있습니다. –
@StephenBlinkhorn 환영합니다. zlib를 사용하는 것은 매우 간단하지만 한 줄짜리는 아닙니다. 또한 더 나은 알고리즘이 있으며 특정 알고리즘에 더 적합한 알고리즘도 있습니다. 이미지 또는 오디오의 경우 프레임 워크에 몇 가지 옵션이 있습니다 (zlib보다 작은 크기를 생성 할 수 있지만 오디오의 경우 zlib보다 구현이 더 복잡 할 수 있음). – justin
음, 실제로 오디오 응용 프로그램에서 작업하고 있지만 압축하려는 데이터는 오디오 신호 데이터와 같지 않습니다. 음악 시퀀스, 제어 데이터, 매개 변수 등 대부분 세션 데이터입니다. 압축이 잘되어야합니다 (파인더에서 파일을 압축하면 파일 크기가 70 %까지 줄어 듭니다). 그러나 업데이트를 기다려야합니다. –