Какой правильный шаблон управления памятью для buffer-> CGImageRef-> UIImage?

У меня есть функция, которая принимает некоторые растровые данные и возвращает UIImage * из него. Это выглядит примерно так:

UIImage * makeAnImage() 
{
    unsigned char * pixels = malloc(...);
    // ...
    CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, pixels, pixelBufferSize, NULL);
    CGImageRef imageRef = CGImageCreate(..., provider, ...);
    UIImage * image =  [[UIImage alloc] initWithCGImage:imageRef];
    return [image autorelease];
}

Может кто-нибудь объяснить точно, кому принадлежит какая память здесь? Я хочу убраться должным образом, но яЯ не уверен, как это сделать безопасно. Документы на них неясны. Если яfree пикселей в конце этой функции после создания UIImage, а затем использовать UIImage, я сбой. Если я освобождаю провайдера или imageRef после создания UIImage, я нене вижу аварии, но ониЯ, очевидно, пропускаю пиксели до конца, так что ям капризно об освобождении этих промежуточных состояний.

(Я знаю по документам CF, что мне нужно вызывать release для обоих последних, потому что они приходят из функций Create, но могу ли я сделать это до использования UIImage?) Предположительно, я могу использовать провайдера 's callloc callback для очистки буфера пикселей, но что еще?

Спасибо!

Ответы на вопрос(4)

Ваш ответ на вопрос