2011-12-16 74 views
0

我已經創建了CGDataProviderRef,其中一個參數是像素數組。當我釋放提供者時,我是否也必須釋放內存,或者是提供者自己做它?iPhone - 當CGDataProviderRef被重新調整時,它是否會破壞動態字段

pixels = (Byte *) malloc([data length] * sizeof (Byte)); 
CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, pixels, [data length], NULL); 

基本上,我一定要撥打:

[provider release]; 
[free pixels]; 

回答

1

當你已經在一個NSData對象你的數據,你可以改用CGDataProviderCreateWithCFData,所以你不必malloc和複製像素。

如果你堅持使用malloc分配陣列可以提供當數據提供商發佈這樣被稱爲回調:

void freePixels(void *info, const void *data, size_t size) { 
    free((void*)data); 
} 

CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, pixels, [data length], freePixels); 
+0

傳遞數據時,自由我得到警告。免費請求void *類型的參數。 – MegaManX 2011-12-16 14:41:11

相關問題