There is a conflict between the docs and the header file regarding the default value of kCGImageSourceShouldCache. They say the precise opposite. Obviously the workaround is to set the value explicitly, but it would be useful to know the true default behaviour for working on legacy code.
The docs say:
kCGImageSourceShouldCache
Whether the image should be cached in a decoded form. The value of this key must be a CFBoolean value. The default value is kCFBooleanTrue in 32-bit, kCFBooleanFalse in 64-bit. This key can be provided in the options dictionary that you can pass to the functions CGImageSourceCopyPropertiesAtIndex and CGImageSourceCreateImageAtIndex.
Available in iOS 4.0 and later.
Declared in CGImageSource.h.
The header file says:
/* 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);