Если вам нужно bitmapData
, не освобождайте его. Если вам это не нужно, вместо этого передайте NULL
в качестве параметра, и Quartz выделит себе память (iOS 4.0 и более поздние версии).
data : Указатель на место назначения в памяти, где должен быть представлен чертеж. Размер этого блока памяти должен быть не менее (bytesPerRow * height) байтов.
В iOS 4.0 и более поздних версиях, а также в Mac OS X v10.6 и более поздних версиях вы можете передать NULL, если хотите, чтобы Quartz выделял память для растрового изображения. Это освобождает вас от управления собственной памятью, что уменьшает проблемы с утечкой памяти.
Но Quartz не копирует bitmapData
, он выполняет рендеринг там. После освобождения context
вы должны освободить эту память.
Редактировать: В одном из примеров Apple проектов память освобождается, но не сразу:
float drawStage3(CGContextRef context, CGRect rect)
{
// ...
cachedData = malloc( (((ScaledToWidth * 32) + 7) / 8) * ScaledToHeight);
// ...
bitmapContext = CGBitmapContextCreate(cachedData /* data */,
// ...
CFRelease(bitmapContext);
// ...
// Clean up
CFRelease(cachedImage);
free(cachedData);
}