Я масштабирую CGImageRef
. Я нашел несколько примеров кода в Интернете, которые начинаются так:
CGColorSpaceRef colorspace = CGImageGetColorSpace(image); // "Get" color space
CGContextRef context = CGBitmapContextCreate(NULL, width, height,
CGImageGetBitsPerComponent(image),
CGImageGetBytesPerRow(image),
colorspace,
CGImageGetAlphaInfo(image));
CGColorSpaceRelease(colorspace); // Really?
Как вы можете видеть выше, освобождается colorspace
. Однако, когда я делаю это, мой код работает большую часть времени, но время от времени происходит сбой, потому что иногда этот экземпляр цветового пространства уже ушел. В документах API говорится:
Вы несете ответственность за сохранение и освобождение цветового пространства по мере необходимости.
Означает ли это, что я должен его освободить? Я предположил, что соглашение состоит в том, что только результаты вызовов с "Create
" в имени возвращают объекты, которые должны быть явно выпущены. Означает ли это, что примеры в Интернете просто ошибочны, если вы отпустите CGColorSpaceRef
?