I'm scaling a CGImageRef
. I found various code examples on the web that begin like so:
CGColorSpaceRef colorspace = CGImageGetColorSpace(image); // "Get" color space
CGContextRef context = CGBitmapContextCreate(NULL, width, height,
CGImageGetBitsPerComponent(image),
CGImageGetBytesPerRow(image),
colorspace,
CGImageGetAlphaInfo(image));
CGColorSpaceRelease(colorspace); // Really?
As you can see above, the colorspace
is released. However, when I do that my code works most of the time, but crashes once in a while, because sometimes that colorspace instance is already gone. The API docs say:
You are responsible for retaining and releasing the color space as necessary.
Does that mean I must release it? I assumed the convention was that only results of calls with "Create
" in the name return objects that have to be released explicitly. Does this mean the examples on the web are simply wrong when releasing that CGColorSpaceRef
?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…