Обновление : я забыл прочитать весь пример кода. Apple выделяет bitmapData
в CreateARGBBitmapContext()
, но не освобождает его. Что совершенно нормально, так как контекст все еще должен рисовать в нем.
Однако, bitmapData
позже придется выпустить, когда они закончат с чертежом, что в точности и делается в конце ManipulateImagePixelData()
. Поэтому, хотя выпустить что-то, полученное функцией get, необычно, это , пример кода правильный .
Чтобы избежать путаницы при освобождении чего-то, что было возвращено функцией get, можно сохранить данные растрового изображения в глобальной переменной / экземпляре и free()
, когда это будет сделано.
Я бы предположил, что это ошибка в примере кода. В документации этой функции не упоминается ничего особенного, поэтому нет причины, по которой Get Rule здесь не будет применяться. Документация Quartz 2D также особо подчеркивает, что модель управления памятью CoreFoundation применяется к API Quartz 2D.