В приведенной ниже функции я пытаюсь вернуть указатель UIImage
, созданный из NSData
.
- Когда я даю опцию
freeWhenDone = YES
, отображаемоеUIImage
возвращается отсюда, это белое изображение. Когда я даю вариант
freeWhenDone = NO
UIImage
returned form here shows it as a black image.- Когда я передаю
rgb_buffer
(массив символов) вместо[rgbData bytes]
function1 и function2 работают правильно. Все хорошо.
Это как-то связано с АРК?
Myfunction
{
char *pu1_out_buffer = malloc(length);
int width, height, stride;
char *rgb_buffer = malloc(BUFFER_LENGTH);
pu1_out_buffer = datafromfile(FILE_PATH) // initialized with some data , not important
/* rgb NSdata created from malloced rub buffer */
NSMutableData *rgbData = [NSMutableData dataWithBytesNoCopy:rgb_buffer
length:(u4_stride * u4_height * 3)
freeWhenDone:YES];
[self function1:pu1_out_buffer
rgb_buffer:(UWORD16 *)[rgbData bytes]
…]
free(pu1_out_buffer);
UIImage *outUIImage = [self function2:rgbData
width:u4_width
height:u4_height
stride:u4_stride];
return outUIImage;
}
function1
,function2
. - person Martin R   schedule 15.10.2013pu1_out_buffer = datafromfile(FILE_PATH)
= неверный синтаксис и утечка памяти.MyFunction {
также недействителен, если не макрос, опубликуйте реальный пример. - person Joe   schedule 15.10.2013malloc
размерBUFFER_LENGTH
, но солгатьNSMutableData
и сказать ему(u4_stride * u4_height * 3)
? - person Joe   schedule 15.10.2013rgb_buffer
освобождается, что было объяснено в вашем предыдущем вопросе вопросов/19380363/ или его возможного дубликата stackoverflow.com/questions/18770265/. Так что вряд ли использованиеrgb_buffer
вместо[rgbData bytes]
работает лучше. - person Martin R   schedule 15.10.2013