2014-08-27 3 views
0

kCGImageSourceShouldCache의 기본값과 관련하여 문서와 헤더 파일간에 충돌이 있습니다. 그들은 정확한 반대를 말한다. 분명히 해결 방법은 명시 적으로 값을 설정하는 것이지만 레거시 코드 작업을위한 실제 기본 동작을 아는 것은 유용합니다.kCGImageSourceShouldCache의 기본값은 무엇입니까?

워드 프로세서 말 :

kCGImageSourceShouldCache 이미지가 디코딩 된 형태로 캐시할지 여부를

. 이 키의 값은 CFBoolean 값이어야합니다. 기본값은 32 비트 kCFBooleanTrue, 64 비트 kCFBooleanFalse입니다. 이 키는 CGImageSourceCopyPropertiesAtIndex 및 CGImageSourceCreateImageAtIndex 함수에 전달할 수있는 옵션 사전에 제공 될 수 있습니다.

iOS 4.0 이상에서 사용할 수 있습니다.

CGImageSource.h에 선언되어 있습니다.

헤더 파일은 말한다 :

/* Specifies whether the image should be cached in a decoded form. The 
* value of this key must be a CFBooleanRef. 
* kCFBooleanFalse indicates no caching, kCFBooleanTrue indicates caching. 
* For 64-bit architectures, the default is kCFBooleanTrue, for 32-bit the default is kCFBooleanFalse. 
*/ 

IMAGEIO_EXTERN const CFStringRef kCGImageSourceShouldCache  
IMAGEIO_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_4_0); 
+0

지금 [doc says] (https://developer.apple.com/documentation/imageio/kcgimagesourceshouldcache?language=objc) "기본값은 32 비트 kCFBooleanFalse, 64 비트 kCFBooleanTrue"입니다. – Pang

답변

0

그냥 혼란에 추가, 나는 iOS에서 테스트를 실행하고 매우 큰 이미지

NSDictionary *options = [NSDictionary dictionaryWithObjects:@[@(4096), @(YES), @(YES)] forKeys: 
         @[(id)kCGImageSourceThumbnailMaxPixelSize, 
          (id)kCGImageSourceCreateThumbnailWithTransform, 
          (id)kCGImageSourceCreateThumbnailFromImageIfAbsent]]; 

    CGImageRef thumbnail = CGImageSourceCreateThumbnailAtIndex(myImageSource, 0,(__bridge CFDictionaryRef) options); 
이 코드 다음의 메모리 사용량을 확인

결과에 따르면 kCGImageSourceShouldCache의 기본값은 32 비트와 64 비트 모두에서 NO라는 것을 알 수 있습니다 (이 값을 수동으로 값을 YES로 설정하면 메모리 사용량이 훨씬 높아졌습니다).