Когда я создаю CGContextRef вручную с помощью CGBitmapContextCreate ()
, мне нужно вручную освобождать данные растрового изображения как ну?
Сейчас я делаю следующее: у меня есть метод, который создает и возвращает CGContextRef. Внутри этого метода я также создаю данные для этого контекста, например:
bitmapData = malloc(bitmapByteCount);
context = CGBitmapContextCreate(bitmapData, ...);
return context;
До сих пор я всегда считал, что все в порядке, когда вызывающий этот метод просто освобождает CGContextRef после его использования: CGContextRelease (theContext) ;
Из документации CGBitmapContextCreate
:
В iOS 4.0 и новее, и Mac OS X v10.6 и новее, вы можете передать NULL, если вы хотите, чтобы Quartz выделял память для растровое изображение. Это освобождает вас от управление собственной памятью, которая уменьшает проблемы с утечкой памяти.
Это заставляет меня думать, что я должен выпустить две вещи после использования моего контекста, который был создан для меня удобным методом: освободить растровые данные контекста, а затем сам контекст.
Итак, я должен сделать это:
void *data = CGBitmapContextGetData(context);
if (data != NULL) {
free(data);
}
Значит, у меня здесь большая утечка памяти, если я не проведу рефакторинг всего моего кода, чтобы освободить также данные растрового изображения, а не только контекст?